Class: Rooq::TypeCoercer
- Inherits:
-
Object
- Object
- Rooq::TypeCoercer
- Defined in:
- lib/rooq/result.rb
Overview
TypeCoercer converts PostgreSQL values to Ruby types based on OID.
Constant Summary collapse
- OID_BOOL =
PostgreSQL type OIDs
16- OID_INT2 =
21- OID_INT4 =
23- OID_INT8 =
20- OID_FLOAT4 =
700- OID_FLOAT8 =
701- OID_NUMERIC =
1700- OID_TEXT =
25- OID_VARCHAR =
1043- OID_DATE =
1082- OID_TIMESTAMP =
1114- OID_TIMESTAMPTZ =
1184- OID_JSON =
114- OID_JSONB =
3802- OID_INT4_ARRAY =
1007- OID_INT8_ARRAY =
1016- OID_TEXT_ARRAY =
1009- OID_VARCHAR_ARRAY =
1015- OID_FLOAT4_ARRAY =
1021- OID_FLOAT8_ARRAY =
1022- OID_BOOL_ARRAY =
1000- OID_UUID =
2950
Instance Method Summary collapse
-
#coerce(value, oid) ⇒ Object
Coerce a value based on its PostgreSQL OID.
Instance Method Details
#coerce(value, oid) ⇒ Object
Coerce a value based on its PostgreSQL OID.
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/rooq/result.rb', line 125 def coerce(value, oid) return nil if value.nil? case oid when OID_JSON, OID_JSONB coerce_json(value) when OID_INT4_ARRAY, OID_INT8_ARRAY coerce_int_array(value) when OID_TEXT_ARRAY, OID_VARCHAR_ARRAY coerce_text_array(value) when OID_FLOAT4_ARRAY, OID_FLOAT8_ARRAY coerce_float_array(value) when OID_BOOL_ARRAY coerce_bool_array(value) when OID_TIMESTAMP, OID_TIMESTAMPTZ (value) when OID_DATE coerce_date(value) when OID_BOOL coerce_bool(value) when OID_INT2, OID_INT4, OID_INT8 coerce_integer(value) when OID_FLOAT4, OID_FLOAT8, OID_NUMERIC coerce_float(value) else value end end |