class ROM::Schema::Definition

Builder object used by schema DSL to establish Axiom relations

@private

Attributes

relations[R]
repositories[R]

Public Class Methods

new(repositories, &block) click to toggle source

@api private

# File lib/rom/schema/definition.rb, line 15
def initialize(repositories, &block)
  @repositories = repositories
  @relations    = {}
  instance_eval(&block) if block
end

Public Instance Methods

[](name) click to toggle source

Return relation identified by name

@return [Axiom::Relation, Axiom::Relation::Base]

@api private

# File lib/rom/schema/definition.rb, line 64
def [](name)
  relations[name]
end
base_relation(name, &block) click to toggle source

Build a base relation

@example

Schema.build do
  base_relation :users do
    # ...
  end
end

@return [Definition]

@api private

# File lib/rom/schema/definition.rb, line 34
def base_relation(name, &block)
  builder    = Relation::Base.new(&block)
  repository = repositories.fetch(builder.repository)

  repository[name] = builder.call(name)
  relations[name]  = repository[name]
end
relation(name, &block) click to toggle source

Build a relation

@example

Schema.build do
  relation :users do
    # ...
  end
end

@return [Definition]

@api private

# File lib/rom/schema/definition.rb, line 55
def relation(name, &block)
  relations[name] = instance_eval(&block)
end

Private Instance Methods

method_missing(name) click to toggle source

Method missing hook

@return [Axiom::Relation, Axiom::Relation::Base]

@api private

Calls superclass method
# File lib/rom/schema/definition.rb, line 75
def method_missing(name)
  self[name] || super
end