Class: Ecoportal::API::V1::PersonSchema
Instance Attribute Summary
#doc
Instance Method Summary
collapse
#as_json, #as_update, #initialize, passthrough, #print, #to_json
Instance Method Details
#[](id) ⇒ Object
22
23
24
25
|
# File 'lib/ecoportal/api/v1/person_schema.rb', line 22
def [](id)
@fields_by_alt_id or index_fields
@fields_by_id[id] || @fields_by_alt_id[id]
end
|
#fields ⇒ Object
7
8
9
10
|
# File 'lib/ecoportal/api/v1/person_schema.rb', line 7
def fields
@fields_by_id or index_fields
@fields_by_id.values
end
|
#fields_by_alt_id ⇒ Object
17
18
19
20
|
# File 'lib/ecoportal/api/v1/person_schema.rb', line 17
def fields_by_alt_id
@fields_by_alt_id or index_fields
@fields_by_alt_id
end
|
#fields_by_id ⇒ Object
12
13
14
15
|
# File 'lib/ecoportal/api/v1/person_schema.rb', line 12
def fields_by_id
@fields_by_id or index_fields
@fields_by_id
end
|
#index_fields ⇒ Object
27
28
29
30
31
32
33
34
35
|
# File 'lib/ecoportal/api/v1/person_schema.rb', line 27
def index_fields
@fields_by_id = {}
@fields_by_alt_id = {}
doc["fields"].each do |field|
wrapped = schema_field_class.new(field)
@fields_by_id[wrapped.id] = wrapped
@fields_by_alt_id[wrapped.alt_id] = wrapped
end
end
|
#initialize_details(details) ⇒ Object
37
38
39
40
41
42
43
44
|
# File 'lib/ecoportal/api/v1/person_schema.rb', line 37
def initialize_details(details)
details.schema_id = id
details.doc["fields"] = fields.map do |field|
field.doc.slice(*%w[id alt_id name multiple type shared]).merge(
"value" => field.multiple ? [] : nil
)
end
end
|