Sha256: e16b01a55c882a0311a99b24a110831f812a2a7f0144a2c8779a54abd9bf40aa

Contents?: true

Size: 1.18 KB

Versions: 6

Compression:

Stored size: 1.18 KB

Contents

# -*- encoding : utf-8 -*-

module Kabutops

  module Adapters

    class DatabaseAdapter < Base
      include Extensions::Logging
      include Extensions::CallbackSupport

      attr_reader :recipe

      callbacks :before_save, :after_save, :save_if

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

      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

      def store result
        raise NotImplementedError
      end

      def nested?
        raise NotImplementedError
      end
    end

  end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
kabutops-0.1.6 lib/kabutops/adapters/database_adapter.rb
kabutops-0.1.5 lib/kabutops/adapters/database_adapter.rb
kabutops-0.1.4 lib/kabutops/adapters/database_adapter.rb
kabutops-0.1.3 lib/kabutops/adapters/database_adapter.rb
kabutops-0.1.2 lib/kabutops/adapters/database_adapter.rb
kabutops-0.1.1 lib/kabutops/adapters/database_adapter.rb