Class: Hanami::Entity::Schema::Definition::Dsl Private

Inherits:
Object
  • Object
show all
Defined in:
lib/hanami/entity/schema.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Schema DSL

Since:

  • 0.7.0

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(&blk) ⇒ Dsl

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Dsl.

Since:

  • 0.7.0



105
106
107
108
# File 'lib/hanami/entity/schema.rb', line 105

def initialize(&blk)
  @attributes = {}
  instance_eval(&blk)
end

Class Method Details

.build(&blk) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 0.7.0



98
99
100
101
# File 'lib/hanami/entity/schema.rb', line 98

def self.build(&blk)
  attributes = new(&blk).to_h
  [attributes, Hanami::Model::Types::Coercible::Hash.schema(attributes)]
end

Instance Method Details

#attribute(name, type) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Define an attribute

Examples:

require 'hanami/model'

class  < Hanami::Entity
  attributes do
    attribute :id,         Types::Int
    attribute :name,       Types::String
    attribute :codes,      Types::Array(Types::Int)
    attribute :users,      Types::Array(User)
    attribute :email,      Types::String.constrained(format: /@/)
    attribute :created_at, Types::DateTime
  end
end

 = .new(name: "Acme Inc.")
.name # => "Acme Inc."

 = .new(foo: "bar")
.foo # => NoMethodError

Since:

  • 0.7.0



136
137
138
# File 'lib/hanami/entity/schema.rb', line 136

def attribute(name, type)
  @attributes[name] = type
end

#to_hObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 0.7.0



142
143
144
# File 'lib/hanami/entity/schema.rb', line 142

def to_h
  @attributes
end