class ReeDao::PgJsonb
def db_dump(value, name:, role: nil, fields_filters: [])
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" end end
def db_load(value, name:, role: nil, fields_filters: [])
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}` is not Sequel::Postgres::JSONB" end subject.type.db_load( value, name: name, role: role, fields_filters: fields_filters + [subject.fields_filter] ) end