Class: EntitySchema::Schema

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

Overview

aggregate of field resolvers

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(owner_name:, extends: nil) ⇒ Schema

Returns a new instance of Schema.



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/entity_schema/schema.rb', line 8

def initialize(owner_name:, extends: nil)
  @owner_name = owner_name

  if extends
    @fields        = extends.fields
    @fields_by_key = extends.fields_by_key
  else
    @fields        = new_strict_hash
    @fields_by_key = {}
  end
end

Instance Attribute Details

#owner_nameObject (readonly)

Returns the value of attribute owner_name.



6
7
8
# File 'lib/entity_schema/schema.rb', line 6

def owner_name
  @owner_name
end

Instance Method Details

#add_field(field) ⇒ Object



20
21
22
23
# File 'lib/entity_schema/schema.rb', line 20

def add_field(field)
  fields[field.name]           = field
  fields_by_key[field.src_key] = field
end

#deep_freezeObject

TODO: use it



54
55
56
57
58
59
60
# File 'lib/entity_schema/schema.rb', line 54

def deep_freeze
  fields.each do |name, field|
    name.freeze
    field.freeze
  end.freeze
  freeze
end

#field?(name) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/entity_schema/schema.rb', line 41

def field?(name)
  fields.key?(name)
end

#given?(obj, name) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/entity_schema/schema.rb', line 45

def given?(obj, name)
  fields[name].given?(obj)
end

#public_get(obj, name) ⇒ Object



33
34
35
# File 'lib/entity_schema/schema.rb', line 33

def public_get(obj, name)
  fields[name].public_get(obj)
end

#public_set(obj, name, value) ⇒ Object



29
30
31
# File 'lib/entity_schema/schema.rb', line 29

def public_set(obj, name, value)
  fields[name].public_set(obj, value)
end

#serialize(obj) ⇒ Object



37
38
39
# File 'lib/entity_schema/schema.rb', line 37

def serialize(obj)
  fields.values.each_with_object({}) { |field, output| field.serialize(obj, output) }
end

#set_from_params(obj, params) ⇒ Object



25
26
27
# File 'lib/entity_schema/schema.rb', line 25

def set_from_params(obj, params)
  params.each { |key, value| fields_by_key[key]&.set(obj, value) }
end

#weak_given?(obj, name) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/entity_schema/schema.rb', line 49

def weak_given?(obj, name)
  fields.fetch(name, nil)&.given?(obj)
end