Sha256: c7bf81e85c925107749d2e8ce5c2f08ec73e17f8a6923f12a2a6019ae90869fd

Contents?: true

Size: 979 Bytes

Versions: 1

Compression:

Stored size: 979 Bytes

Contents

module Casino
  class Store
    attr_accessor :collection_class, :collection_name

    delegate :drop, :find, :indexes, :insert, to: :collection

    delegate :count, :distinct, :each, :first, :limit, :remove, :remove_all,
      :select, :skip, :sort, :update, :update_all, :upsert, to: :query

    delegate :where, :in, to: :criteria

    def initialize(document_class)
      self.collection_class = document_class
      self.collection_name = document_class.collection_name
    end

    def collection
      @collection ||= session[collection_name.to_sym]
    end

    def query
      @query ||= collection.find
    end

    def merge(*documents)
      documents.each do |document|
        document = document.mongoize
        criteria = find _id: document['_id']
        criteria.upsert document
      end
    end

    def criteria
      @criteria ||= collection_class.scoped
    end

    private

    def session
      @session ||= Mongoid.default_session
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongoid-casino-0.0.4 lib/casino/store.rb