Sha256: 25c45c656511ebf12ca9a64fa837d70974977cb6b8fc4e023eac9b9c01d21bcb
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
# encoding: utf-8 require 'rom/schema/definition/relation/base' module ROM class Schema # Builder object used by schema DSL to establish Axiom relations # # @private class Definition include Equalizer.new(:repositories, :relations) attr_reader :repositories, :relations # @api private def initialize(repositories, &block) @repositories = repositories @relations = {} instance_eval(&block) if block end # Build a base relation # # @example # # Schema.build do # base_relation :users do # # ... # end # end # # @return [Definition] # # @api private def base_relation(name, &block) builder = Relation::Base.new(relations, &block) repository = repositories.fetch(builder.repository) repository[name] = builder.call(name) relations[name] = repository[name] end # Build a relation # # @example # # Schema.build do # relation :users do # # ... # end # end # # @return [Definition] # # @api private def relation(name, &block) relations[name] = instance_eval(&block) end # Return relation identified by name # # @return [Axiom::Relation, Axiom::Relation::Base] # # @api private def [](name) relations[name] end private # Method missing hook # # @return [Axiom::Relation, Axiom::Relation::Base] # # @api private def method_missing(*args) self[args.first] || super end end # Definition end # Schema end # ROM
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rom-0.2.0 | lib/rom/schema/definition.rb |