module Promiscuous::BlackHole::TypeInferrer

Public Instance Methods

sql_representation_for(value) click to toggle source
# File lib/promiscuous_black_hole/type_inferrer.rb, line 22
def sql_representation_for(value)
  case value
  when Array
    Sequel.pg_array(value.map { |el| sql_representation_for(el) }, type_for(value.first).to_sym)
  when Hash
    Sequel.pg_json(value)
  else
    value
  end
end
type_for(value) click to toggle source
# File lib/promiscuous_black_hole/type_inferrer.rb, line 3
def type_for(value)
  case value
  when Array
    :"#{type_for(value.first)} array"
  when Numeric
    :float
  when Hash
    :json
  when /^\d{4}-\d{2}-\d{2}.\d{2}:\d{2}:\d{2}/
    :timestamptz
  when /^\d{4}-\d{2}-\d{2}$/
    :date
  when true, false
    :boolean
  else
    :text
  end
end