Sha256: bbe2c6570b66d1c7fcb17b3f1ca507c90b9cbb703ee37ed593d5436a48ba0261
Contents?: true
Size: 1.91 KB
Versions: 1
Compression:
Stored size: 1.91 KB
Contents
require "sequel/extensions/pg_json" package_require("ree_object/functions/to_hash") class ReeDao::PgJsonb < ReeMapper::AbstractWrapper contract( Any, Kwargs[ name: String, role: Nilor[Symbol, ArrayOf[Symbol]], fields_filters: ArrayOf[ReeMapper::FieldsFilter] ] => Or[ Sequel::Postgres::JSONBHash, Sequel::Postgres::JSONBArray, Sequel::Postgres::JSONBInteger, Sequel::Postgres::JSONBTrue, Sequel::Postgres::JSONBFalse, Sequel::Postgres::JSONBString, Sequel::Postgres::JSONBFloat, Sequel::Postgres::JSONBNull ] ).throws(ReeMapper::TypeError) def db_dump(value, name:, role: nil, fields_filters: []) value = subject.type.db_dump( value, name: name, role: role, fields_filters: fields_filters + [subject.fields_filter] ) begin Sequel.pg_jsonb_wrap(value) rescue Sequel::Error raise ReeMapper::TypeError, "`#{name}` should be an jsonb primitive, got `#{truncate(value.inspect)}`" end end contract( Any, Kwargs[ name: String, role: Nilor[Symbol, ArrayOf[Symbol]], fields_filters: ArrayOf[ReeMapper::FieldsFilter] ] => Or[ Hash, Array, Integer, Float, String, Bool, NilClass, Rational, ] ).throws(ReeMapper::TypeError) def db_load(value, name:, role: nil, fields_filters: []) value = case value when Sequel::Postgres::JSONBHash ReeObject::ToHash.new.call(value.to_h) when Sequel::Postgres::JSONBArray ReeObject::ToHash.new.call(value.to_a) when Numeric, String, TrueClass, FalseClass, NilClass value else raise ReeMapper::TypeError, "`#{name}` should be a Sequel::Postgres::JSONB, got `#{truncate(value.inspect)}`" end subject.type.db_load( value, name: name, role: role, fields_filters: fields_filters + [subject.fields_filter] ) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ree_lib-1.0.86 | lib/ree_lib/packages/ree_dao/package/ree_dao/wrappers/pg_jsonb.rb |