Sha256: 9496eca90dbcbec479f19a460e0dd9fc1b0e025aca286651fa7e4cea6aec58fa

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

module Gummi
  module RepositoryLayer
    module Repository
      extend ActiveSupport::Concern

      included do
        include Repobahn::Repository
        after_conversion :set_id_and_version
      end

      def exists?(id)
        db_class.exist? id
      end

      def get(id)
        return unless id
        document = db_class.get id
        db_instance_to_entity document if document
      end

      def delete(id)
        db_class.delete id
      end

      def search(options = {}, &block)
        search = db_class.new_filtered_search(options)
        yield search if block_given?
        Repository::Result.new search.execute, self
      end

      def raw_search(options = {}, &block)
        search = db_class.new_raw_search(options)
        yield search if block_given?
        Repository::Result.new search.execute, self
      end

      def overwrite(entity)
        return false unless entity.valid?
        document = db_class.new(entity.attributes)
        document.overwrite
      end

      def update(id, attributes)
        db_class.update id, attributes
      end

      def set_id_and_version(entity, db_instance)
        entity.id      = db_instance.id
        entity.version = db_instance.version
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gummi-0.3.12 lib/gummi/repository_layer/repository.rb