Sha256: ca73de6ff97da5b86d2ed5d1ac2ebde9926cf47f63fe2193b9de860c50ece659
Contents?: true
Size: 1.45 KB
Versions: 1
Compression:
Stored size: 1.45 KB
Contents
# frozen_string_literal: true require "sequel/extensions/pg_array" class ReeDao::PgArray < ReeMapper::AbstractWrapper contract( Any, Kwargs[ name: String, role: Nilor[Symbol, ArrayOf[Symbol]], fields_filters: ArrayOf[ReeMapper::FieldsFilter] ] => Or[Sequel::Postgres::PGArray, String] ) def db_dump(value, name:, role: nil, fields_filters: []) if !value.is_a?(Array) raise ReeMapper::TypeError, "`#{name}` should be an array, got `#{truncate(value.inspect)}`" end value = value.map.with_index do |el, index| subject.type.db_dump( el, name: "#{name}[#{index}]", role: role, fields_filters: fields_filters + [subject.fields_filter] ) end if value.empty? "{}" else Sequel.pg_array(value) end end contract( Any, Kwargs[ name: String, role: Nilor[Symbol, ArrayOf[Symbol]], fields_filters: ArrayOf[ReeMapper::FieldsFilter] ] => Array ).throws(ReeMapper::TypeError) def db_load(value, name:, role: nil, fields_filters: []) if !value.is_a?(Sequel::Postgres::PGArray) raise ReeMapper::TypeError, "`#{name}` should be a Sequel::Postgres::PGArray, got `#{truncate(value.inspect)}`" end value.map.with_index do |val, index| subject.type.db_load( val, name: "#{name}[#{index}]", role: role, fields_filters: fields_filters + [subject.fields_filter] ) end 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_array.rb |