Sha256: df4f375782e0d409b8813db95e9f37a3ec4e32c74079a459db9c62310144af26
Contents?: true
Size: 1.65 KB
Versions: 3
Compression:
Stored size: 1.65 KB
Contents
# encoding: utf-8 module ROM # Builder DSL for ROM relations # class Mapping include Adamantium::Flat attr_reader :environment, :schema, :model private :environment, :schema, :model # Build ROM relations # # @example # relation = Axiom::Relation::Base.new(:users, [[:id, Integer], [:user_name, String]]) # env = { users: relation } # # User = Class.new(OpenStruct.new) # # registry = Mapping.build(env) do # users do # map :id # map :user_name, to: :name # end # end # # registry[:users] # # #<ROM::Relation:0x000000025d3160> # # @param [Environment] rom environment # @param [Schema] rom schema # # @return [Hash] # # @api public def self.build(environment, schema, &block) new(environment, schema, &block) end # Initialize a new mapping instance # # @return [undefined] # # @api private def initialize(environment, schema, &block) @environment = environment @schema = schema instance_eval(&block) end private # Method missing hook # # @return [Relation] # # @api private def method_missing(name, *, &block) relation = schema[name] if relation build_relation(relation, &block) else super end end # Build relation # # @return [Relation] # # @api private def build_relation(relation, &block) definition = Definition.build(relation.header, &block) environment[relation.name] = Relation.build(relation, definition.mapper) end end # Mapping end # ROM
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rom-relation-0.1.2 | lib/rom/mapping.rb |
rom-relation-0.1.1 | lib/rom/mapping.rb |
rom-relation-0.1.0 | lib/rom/mapping.rb |