Class: Chewy::Index::Adapter::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/chewy/index/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/index/adapter/base.rb', line 8

def options
  @options
end

#targetObject (readonly)

Returns the value of attribute target.



8
9
10
# File 'lib/chewy/index/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/index/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)


34
35
36
# File 'lib/chewy/index/adapter/base.rb', line 34

def identify(_collection)
  raise NotImplementedError
end

#import(_batch) {|_batch| ... } ⇒ true, false

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

{ delete: [object_or_id1, object_or_id2], index: [object3, object4, object5] }

Yield Parameters:

  • _batch (Array<Object>)

    each batch of objects

Returns:

  • (true, false)

    returns true if all the block call returns true and false otherwise

Raises:

  • (NotImplementedError)


45
46
47
# File 'lib/chewy/index/adapter/base.rb', line 45

def import(_batch, &_block)
  raise NotImplementedError
end

#import_fields(_fields, _batch_size) {|batch| ... } ⇒ Object

Unlike #import fetches only ids (references) to the imported objects, using the same procedures as #import.

Parameters:

  • _fields (Array<Symbol>)

    additional fields to fetch

  • _batch_size (Integer)

    batch size, defaults to 1000

Yield Parameters:

  • batch (Array<Object>)

    each batch of objects

Raises:

  • (NotImplementedError)


55
56
57
# File 'lib/chewy/index/adapter/base.rb', line 55

def import_fields(_fields, _batch_size, &_block)
  raise NotImplementedError
end

#import_references(_batch_size) {|batch| ... } ⇒ Object

Uses the same strategy as import for the passed arguments, and returns an array of references to the passed objects. Returns ids if possible. Otherwise - and array of objects themselves.

Parameters:

  • _batch_size (Integer)

    batch size, defaults to 1000

Yield Parameters:

  • batch (Array<Object>)

    each batch of objects

Raises:

  • (NotImplementedError)


65
66
67
# File 'lib/chewy/index/adapter/base.rb', line 65

def import_references(_batch_size, &_block)
  raise NotImplementedError
end

#load(_ids, **_options) ⇒ Object

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

load([1, 2, 3]) #=> # [, nil, ], assuming, #2 was not found

Raises:

  • (NotImplementedError)


75
76
77
# File 'lib/chewy/index/adapter/base.rb', line 75

def load(_ids, **_options)
  raise NotImplementedError
end

#nameObject

Camelcased name.

Raises:

  • (NotImplementedError)


18
19
20
# File 'lib/chewy/index/adapter/base.rb', line 18

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['product'] or ProductsIndex.product



26
27
28
# File 'lib/chewy/index/adapter/base.rb', line 26

def type_name
  @type_name ||= name.underscore
end