class Ecoportal::API::V1::PersonSchema

Public Instance Methods

[](id) click to toggle source
# File lib/ecoportal/api/v1/person_schema.rb, line 25
def [](id)
  @fields_by_alt_id or index_fields
  @fields_by_id[id] || @fields_by_alt_id[id]
end
fields() click to toggle source
# File lib/ecoportal/api/v1/person_schema.rb, line 10
def fields
  @fields_by_id or index_fields
  @fields_by_id.values
end
fields_by_alt_id() click to toggle source
# File lib/ecoportal/api/v1/person_schema.rb, line 20
def fields_by_alt_id
  @fields_by_alt_id or index_fields
  @fields_by_alt_id
end
fields_by_id() click to toggle source
# File lib/ecoportal/api/v1/person_schema.rb, line 15
def fields_by_id
  @fields_by_id or index_fields
  @fields_by_id
end
index_fields() click to toggle source
# File lib/ecoportal/api/v1/person_schema.rb, line 30
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) click to toggle source
# File lib/ecoportal/api/v1/person_schema.rb, line 40
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