class ROM::SQL::Postgres::TypeBuilder

Public Instance Methods

map_db_type(db_type) click to toggle source
# File lib/rom/sql/extensions/postgres/type_builder.rb, line 67
def map_db_type(db_type)
  self.class.db_type_mapping[db_type] ||
    (db_type.start_with?('timestamp') ? SQL::Types::Time : nil)
end
map_pk_type(type, db_type, **options) click to toggle source
# File lib/rom/sql/extensions/postgres/type_builder.rb, line 44
def map_pk_type(type, db_type, **options)
  if numeric?(type, db_type)
    type = self.class.numeric_pk_type
  else
    type = map_type(type, db_type, **options)
  end

  type.meta(primary_key: true)
end
map_type(ruby_type, db_type, enum_values: nil, **_) click to toggle source
Calls superclass method
# File lib/rom/sql/extensions/postgres/type_builder.rb, line 54
def map_type(ruby_type, db_type, enum_values: nil, **_)
  if db_type.end_with?(self.class.db_array_type_matcher)
    member_name = db_type[0...-2]
    member_type = self.class.db_type_mapping[member_name]

    Types::Array(member_name, member_type)
  elsif enum_values
    SQL::Types::String.enum(*enum_values)
  else
    map_db_type(db_type) || super
  end
end
numeric?(ruby_type, db_type) click to toggle source
# File lib/rom/sql/extensions/postgres/type_builder.rb, line 72
def numeric?(ruby_type, db_type)
  self.class.db_numeric_types.include?(db_type) || ruby_type == :integer
end