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

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Extensions::CallbackSupport

#callbacks, #manager, #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

#find(resource) ⇒ Object

Raises:

  • (NotImplementedError)


46
47
48
# File 'lib/kabutops/adapters/database_adapter.rb', line 46

def find resource
  raise NotImplementedError
end

#process(resource, page) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/kabutops/adapters/database_adapter.rb', line 20

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

  previous = find(resource)

  [recipe.process(resource, page, previous)].flatten.each do |result|
    process_one(resource, page, result)
  end
end

#process_one(resource, page, result) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/kabutops/adapters/database_adapter.rb', line 30

def process_one resource, page, result
  result.update(updated_at: Time.now.to_i)
  save = (notify(:save_if, resource, page, result) || []).all?

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

#store(result) ⇒ Object

Raises:

  • (NotImplementedError)


42
43
44
# File 'lib/kabutops/adapters/database_adapter.rb', line 42

def store result
  raise NotImplementedError
end