Class: ROM::SQL::Postgres::TypeBuilder
Constant Summary
Schema::TypeBuilder::DECIMAL_REGEX
Instance Method Summary
collapse
[], #call, #map_decimal_type, register
Instance Method Details
#map_db_type(db_type) ⇒ Object
65
66
67
68
|
# File 'lib/rom/sql/extensions/postgres/type_builder.rb', line 65
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 = {}) ⇒ Object
42
43
44
45
46
47
48
49
50
|
# File 'lib/rom/sql/extensions/postgres/type_builder.rb', line 42
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, **_) ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/rom/sql/extensions/postgres/type_builder.rb', line 52
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) ⇒ Boolean
70
71
72
|
# File 'lib/rom/sql/extensions/postgres/type_builder.rb', line 70
def numeric?(ruby_type, db_type)
self.class.db_numeric_types.include?(db_type) || ruby_type == :integer
end
|