Class: Kabutops::Adapters::DatabaseAdapter

Inherits:
Base
  • Object
show all
Includes:
Extensions::CallbackSupport, Extensions::Logging
Defined in:
lib/kabutops/adapters/database_adapter.rb

Direct Known Subclasses

ElasticSearch, Mongo, Redis

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Extensions::CallbackSupport

#callbacks, #notify

Methods included from Extensions::Includable

#append_features, #included

Methods included from Extensions::Logging

#logger

Methods inherited from Base

#debug, #enable_debug, #initialize

Constructor Details

This class inherits a constructor from Kabutops::Adapters::Base

Instance Attribute Details

#recipeObject (readonly)

Returns the value of attribute recipe.



11
12
13
# File 'lib/kabutops/adapters/database_adapter.rb', line 11

def recipe
  @recipe
end

Instance Method Details

#data(params = {}, &block) ⇒ Object



15
16
17
18
# File 'lib/kabutops/adapters/database_adapter.rb', line 15

def data params={}, &block
  @recipe = Recipe.new(params)
  @recipe.instance_eval &block
end

#nested?Boolean

Returns:

  • (Boolean)

Raises:

  • (NotImplementedError)


44
45
46
# File 'lib/kabutops/adapters/database_adapter.rb', line 44

def nested?
  raise NotImplementedError
end

#process(resource, page) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/kabutops/adapters/database_adapter.rb', line 20

def process resource, page
  raise 'data block not defined' unless @recipe

  [@recipe.process(resource, page)].flatten.each do |result|
    result.update(updated_at: Time.now.to_i)
    save = (notify(:save_if, resource, page, result) || []).all?

    if debug
      logger.info("#{self.class.to_s} outputs:")
      notify(:before_save, result) if save
      logger.info(save ? result.to_hash : 'not valid for save')
      notify(:after_save, result) if save
    elsif save
      notify(:before_save, result)
      store(result)
      notify(:after_save, result)
    end
  end
end

#store(result) ⇒ Object

Raises:

  • (NotImplementedError)


40
41
42
# File 'lib/kabutops/adapters/database_adapter.rb', line 40

def store result
  raise NotImplementedError
end