module MetaModel::Metafile::DSL

Public Instance Methods

attr(key, type = :string, **args) click to toggle source
# File lib/metamodel/metafile/dsl.rb, line 20
def attr(key, type = :string, **args)
  @current_model.properties << Record::Property.new(key, type, args)
end
belongs_to(name, model_name = nil, **args) click to toggle source
# File lib/metamodel/metafile/dsl.rb, line 37
def belongs_to(name, model_name = nil, **args)
  model_name = name.to_s.singularize.camelize if model_name.nil?
  association = Record::Association.new(name, current_model.name, model_name, :belongs_to, args)
  @associations << association
end
define(model_name) { || ... } click to toggle source
# File lib/metamodel/metafile/dsl.rb, line 13
def define(model_name)
  UI.message '-> '.green + "Resolving `#{model_name.to_s.camelize}`"
  @current_model = Record::Model.new(model_name)
  yield if block_given?
  @models << @current_model
end
has_many(name, model_name = nil, **args) click to toggle source
# File lib/metamodel/metafile/dsl.rb, line 30
def has_many(name, model_name = nil, **args)
  model_name = name.to_s.singularize.camelize if model_name.nil?
  raise Informative, "has_many relation can't be created with optional model name" if model_name.end_with? "?"
  association = Record::Association.new(name, current_model.name, model_name, :has_many, args)
  @associations << association
end
has_one(name, model_name = nil, **args) click to toggle source
# File lib/metamodel/metafile/dsl.rb, line 24
def has_one(name, model_name = nil, **args)
  model_name = name.to_s.singularize.camelize if model_name.nil?
  association = Record::Association.new(name, current_model.name, model_name, :has_one, args)
  @associations << association
end
metamodel_version(version) click to toggle source
# File lib/metamodel/metafile/dsl.rb, line 8
def metamodel_version(version)
  raise Informative,
    "Meta file #{version} not matched with current metamodel version #{VERSION}" if version != VERSION
end