Sha256: fc77d96377e5af001c884771e2fe4d4857c4f2fc7242a975980ce3520218e8c9
Contents?: true
Size: 1.63 KB
Versions: 4
Compression:
Stored size: 1.63 KB
Contents
module DataMapper module Resource # the state of the resource (abstract) class State extend Equalizer equalize :resource attr_reader :resource def initialize(resource) @resource = resource end def get(subject, *args) subject.get(resource, *args) end def set(subject, value) subject.set(resource, value) self end def delete raise NotImplementedError, "#{self.class}#delete should be implemented" end def commit raise NotImplementedError, "#{self.class}#commit should be implemented" end def rollback raise NotImplementedError, "#{self.class}#rollback should be implemented" end private def model @model ||= resource.model end def properties @properties ||= model.properties(repository.name) end def relationships @relationships ||= model.relationships(repository.name).values end def identity_map @identity_map ||= repository.identity_map(model) end def remove_from_identity_map identity_map.delete(resource.key) end def add_to_identity_map identity_map[resource.key] = resource end def set_child_keys relationships.each do |relationship| set_child_key(relationship) end end def set_child_key(relationship) return unless relationship.loaded?(resource) && relationship.respond_to?(:resource_for) set(relationship, get(relationship)) end end # class State end # module Resource end # module DataMapper
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
dm-core-1.0.2 | lib/dm-core/resource/state.rb |
dm-core-1.0.1 | lib/dm-core/resource/state.rb |
dm-core-1.0.0 | lib/dm-core/resource/state.rb |
dm-core-1.0.0.rc3 | lib/dm-core/resource/state.rb |