Sha256: c456bfc6b2cf503869fa3a3e3a73f9a067bb2f72daf8b252108b2b83a2d7dc6b
Contents?: true
Size: 1.9 KB
Versions: 14
Compression:
Stored size: 1.9 KB
Contents
module Ecoportal module API class V1 class SchemaFieldValue < Common::BaseModel passthrough :id, :alt_id, :type, :name, :shared, :multiple, to: :doc def value return @value if defined?(@value) @value = case type when "text", "phone_number", "number", "boolean", "select" doc["value"] when "date" if doc["value"] maybe_multiple(doc["value"]) do |v| DateTime.iso8601(v) end end else raise "Unknown type #{type}" end end def value=(value) case type when "text", "phone_number", "select" doc["value"] = @value = maybe_multiple(value) do |v| v&.to_s end when "number" maybe_multiple(value) do |v| unless v.nil? || v.is_a?(Numeric) raise "Invalid number type #{v.class}" end end doc["value"] = @value = value when "boolean" doc["value"] = @value = !!value when "date" maybe_multiple(value) do |v| unless v.nil? || v.respond_to?(:iso8601) raise "Invalid date type #{v.class}" end end @value = value doc["value"] = maybe_multiple(@value) do |v| v&.iso8601 end else raise "Unknown type #{type}" end @value end def maybe_multiple(value) if multiple unless value.is_a?(Array) raise "Expected Array, got #{value.class}" end value.map {|v| yield v } else yield value end end end end end end
Version data entries
14 entries across 14 versions & 1 rubygems