Sha256: fa79caa890a7806aad7e2a6284e7ec1db62d723e73ada8d8fc04e78c94f7f8c3

Contents?: true

Size: 1.9 KB

Versions: 2

Compression:

Stored size: 1.9 KB

Contents

module Lolita
  module Adapter
    class Mongoid
      include Lolita::Adapter::AbstractAdapter

      attr_reader :dbi, :klass
      def initialize(dbi)
        @dbi=dbi
        @klass=dbi.klass
      end

      def associations
        klass.relations
      end

      def associations_class_names
        names=[]
        associations.each{|name,association|
          names<<association.class_name
        }
        names
      end

      def reflect_on_association(name)
        klass.reflect_on_association(name)
      end

      def association_macro(association)
        macro=association.macro
        case macro
        when :references_many
          :many
        when :referenced_in
          :one
        when :embeds_one
          :one
        when :embeds_many
          :many
        when :references_one
          :one
        end
      end

      def association_class_name(association)
        association.class_name
      end

      def fields
        @fields||=self.klass.fields.collect{|name,field|
          field_to_hash(name,field)
        }
        @fields
      end

      def find_by_id(id)
        self.klass.where(:_id=>id).first
      end

      def find *args
        self.klass.find(*args)
      end

      def paginate(options={})
        self.klass.paginate(options)
      end

      def db
        self.klass.db
      end

      def db_name
        self.klass.db.name
      end

      def collection
        self.klass.collection
      end

      def collection_name
        collection.name
      end

      def collections
        db.collections
      end

      def collection_names
        db.collection_names
      end

      private

      def field_to_hash(name,field)
        {
          :name=>name,
          :type=>field.type.to_s,
          :title=>name.to_s.humanize,
          :options=>field.options.merge({
            :primary=>name.to_s=="_id"
          })
        }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lolita-3.0.7 lib/lolita/adapter/mongoid.rb
lolita-3.0.6 lib/lolita/adapter/mongoid.rb