Module: Relationizer::MySQL

Defined in:
lib/relationizer/mysql.rb

Defined Under Namespace

Classes: ReasonlessTypeError, TypeNotFoundError

Constant Summary collapse

DEFAULT_TYPES =
-> (obj) {
  case obj
  when Integer    then :BIGINT
  when BigDecimal then :'DECIMAL(65,30)'
  when Float      then :DOUBLE
  when String     then :TEXT
  when TrueClass  then :BOOLEAN
  when FalseClass then :BOOLEAN
  when Time       then :DATETIME
  when DateTime   then :DATETIME
  when Date       then :DATE
  else
    nil
  end
}

Instance Method Summary collapse

Instance Method Details

#create_relation_literal(schema, tuples) ⇒ Object



26
27
28
29
30
31
32
33
34
35
# File 'lib/relationizer/mysql.rb', line 26

def create_relation_literal(schema, tuples)
  types = fixed_types(schema.values, tuples)
  names = schema.keys

  json_string = to_json_document(names, types, tuples)
  escaped = escape_for_sql(json_string)
  columns_clause = to_columns_clause(names, types)

  %[(SELECT * FROM JSON_TABLE('#{escaped}', "$[*]" COLUMNS(#{columns_clause})) AS t)]
end