Class: Chewy::Type::Adapter::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/chewy/type/adapter/base.rb

Overview

Basic adapter class. Contains interface, need to implement to add any classes support

Direct Known Subclasses

Object, Orm

Constant Summary collapse

BATCH_SIZE =
1000

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



8
9
10
# File 'lib/chewy/type/adapter/base.rb', line 8

def options
  @options
end

#targetObject (readonly)

Returns the value of attribute target.



8
9
10
# File 'lib/chewy/type/adapter/base.rb', line 8

def target
  @target
end

Class Method Details

.accepts?(target) ⇒ Boolean

Returns ‘true` if this adapter is applicable for the given target.

Returns:

  • (Boolean)


12
13
14
# File 'lib/chewy/type/adapter/base.rb', line 12

def self.accepts? target
  true
end

Instance Method Details

#identify(collection) ⇒ Object

Returns shortest identifies for further postponed importing. For ORM/ODM it will be an array of ids for simple objects - just objects themselves

Raises:

  • (NotImplementedError)


35
36
37
# File 'lib/chewy/type/adapter/base.rb', line 35

def identify collection
  raise NotImplementedError
end

#import(*args, &block) ⇒ Object

Splits passed objects to groups according to ‘:batch_size` options. For every group crates hash with action keys. Example:

{ delete: [object1, object2], index: [object3, object4, object5] }

Returns true id all the block call returns true and false otherwise

Raises:

  • (NotImplementedError)


46
47
48
# File 'lib/chewy/type/adapter/base.rb', line 46

def import *args, &block
  raise NotImplementedError
end

#load(*args) ⇒ Object

Returns array of loaded objects for passed objects array. If some object was not loaded, it returns ‘nil` in the place of this object

load(double(id: 1), double(id: 2), double(id: 3)) #=>
  # [<Product id: 1>, nil, <Product id: 3>], assuming, #2 was not found

Raises:

  • (NotImplementedError)


56
57
58
# File 'lib/chewy/type/adapter/base.rb', line 56

def load *args
  raise NotImplementedError
end

#nameObject

Camelcased name, used as type class constant name. For returned value ‘Product’ will be generated class name ‘ProductsIndex::Product`

Raises:

  • (NotImplementedError)


19
20
21
# File 'lib/chewy/type/adapter/base.rb', line 19

def name
  raise NotImplementedError
end

#type_nameObject

Underscored type name, user for elasticsearch type creation and for type class access with ProductsIndex.type_hash hash or method. ‘ProductsIndex.type_hash` or `ProductsIndex.product`



27
28
29
# File 'lib/chewy/type/adapter/base.rb', line 27

def type_name
  @type_name ||= name.underscore
end