Sha256: 4fd4326fce5ee1cd3920eab5137290c963f91c210c5fb1032c306ecee56bd26f

Contents?: true

Size: 988 Bytes

Versions: 7

Compression:

Stored size: 988 Bytes

Contents

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

module Kabutops

  module Adapters

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

      attr_reader :recipe

      callbacks :after_save, :save_if

      def data &block
        @recipe = Recipe.new
        @recipe.instance_eval &block
      end

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

        result = @recipe.process(resource, page)
        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:")
          logger.info(save ? result.to_hash : 'not valid for save')
        elsif save
          store(result)
          notify(:after_save, result)
        end
      end

      def store result
        raise NotImplementedError
      end

      def nested?
        raise NotImplementedError
      end
    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
kabutops-0.0.15 lib/kabutops/adapters/database_adapter.rb
kabutops-0.0.14 lib/kabutops/adapters/database_adapter.rb
kabutops-0.0.13 lib/kabutops/adapters/database_adapter.rb
kabutops-0.0.12 lib/kabutops/adapters/database_adapter.rb
kabutops-0.0.11 lib/kabutops/adapters/database_adapter.rb
kabutops-0.0.10 lib/kabutops/adapters/database_adapter.rb
kabutops-0.0.9 lib/kabutops/adapters/database_adapter.rb