lib/mongo_adapter/model.rb in dm-mongo-adapter-0.2.0.pre3 vs lib/mongo_adapter/model.rb in dm-mongo-adapter-0.6.0

- old
+ new

@@ -1,86 +1,15 @@ module DataMapper module Mongo module Model - def self.extended(model) - model.extend Embedment - end + include Migrations::Model - # Defines a Property on the Resource - # - # Overrides the property method in dm-core so as to automatically map - # Array and Hash types to EmbeddedArray and EmbeddedHash respectively. - # - # @param [Symbol] name - # the name for which to call this property - # @param [Type] type - # the type to define this property ass - # @param [Hash(Symbol => String)] options - # a hash of available options - # - # @return [Property] - # the created Property - # - # @api public - def property(name, type, options = {}) - if Array == type - type = DataMapper::Mongo::Types::EmbeddedArray - elsif Hash == type - type = DataMapper::Mongo::Types::EmbeddedHash - elsif DateTime == type - type = DataMapper::Mongo::Types::DateTime - elsif Date == type - type = DataMapper::Mongo::Types::Date - end - - super(name, type, options) - end - - # Loads an instance of this Model, taking into account IdentityMap - # lookup, inheritance columns(s) and Property typecasting. Also loads - # the embedments on the Resource. - # - # @param [Enumerable<Object>] records - # An Array of Resource or Hashes to load a Resource with - # @param [DataMapper::Query] query - # The query used to load the Resource - # - # @return [Resource] - # The loaded Resource instance - # - # @overrides DataMapper::Model#load - # - # @api semipublic - def load(records, query) - if discriminator = properties(query.repository.name).discriminator - records.each do |record| - discriminator_key = discriminator.name.to_s - discriminator_value = discriminator.type.load(record[discriminator_key], discriminator) - - record[discriminator_key] = discriminator_value - end - end - - resources = super - - # Load embedded resources - resources.each_with_index do |resource, index| - resource.model.embedments.each do |name, relationship| - unless (targets = records[index][name.to_s]).blank? - relationship.set(resource, targets, true) - end - end - end - - resources - end - private # @api private def const_missing(name) - if DataMapper::Mongo::Types.const_defined?(name) - DataMapper::Mongo::Types.const_get(name) + if DataMapper::Mongo::Property.const_defined?(name) + DataMapper::Mongo::Property.const_get(name) else super end end end # Model