Module: CDP::Builders::Value
Constant Summary collapse
- VALID_COMMAND_TYPE =
%i[upsert_entity create_entity update_entity create_if_not_exists_entity].freeze
Class Method Summary collapse
- .build(schema, field_name, field_value, unsupported_types = []) ⇒ Object
- .build_payload_with_ref(schema, attributes, unsupported_types = []) ⇒ Object
- .supported_command(command) ⇒ Object
Class Method Details
.build(schema, field_name, field_value, unsupported_types = []) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/cdp/builders/value.rb', line 29 def build(schema, field_name, field_value, unsupported_types=[]) field_type = schema[:field_types][field_name.to_s] raise CDP::SchemaMissingFieldError, "invalid field #{field_name}, is not on schema" unless field_type raise ArgumentError, "unsupported type #{field_type[:data_type]} (#{field_type[:name]})" if unsupported_types.include?(field_type[:data_type]) case field_type[:data_type] when 'STRING' CDP::Value.create_string(field_value) when 'TEXT' CDP::Value.create_text(field_value) when 'BOOLEAN' CDP::Value.create_bool(field_value) when 'INTEGER' CDP::Value.create_int(field_value) when 'FLOAT' CDP::Value.create_float(field_value) when 'TIMESTAMP' CDP::Value.(field_value) when 'SET' CDP::Value.create_set_values(field_value) else raise "invalid value type: #{field_type[:name]} (#{field_type[:data_type]}) = '#{field_value}'" end end |
.build_payload_with_ref(schema, attributes, unsupported_types = []) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/cdp/builders/value.rb', line 10 def build_payload_with_ref(schema, attributes, unsupported_types=[]) attributes.each_with_object({}) do |(name, value), memo| if value.class == CDP::Transaction raise ArgumentError, 'Unsupported multiple commands' if value.commands.size > 1 raise ArgumentError, 'Unsupported command' unless supported_command(value.commands.first) memo[name] = CDP::Value.new( reference: CDP::CommandReference.new(id: value.commands.first.id) ) next end memo[name] = Value.build(schema, name, value, unsupported_types) end end |
.supported_command(command) ⇒ Object
25 26 27 |
# File 'lib/cdp/builders/value.rb', line 25 def supported_command(command) VALID_COMMAND_TYPE.include?(command.command_type) end |