Sha256: 175fb1763502f859708da1f623bdcfac561535f9ddf683d7126f47c3d10615d6

Contents?: true

Size: 1.2 KB

Versions: 13

Compression:

Stored size: 1.2 KB

Contents

module Torque
  module PostgreSQL
    module Adapter
      module OID
        class EnumSet < Enum
          def initialize(name, enum_klass)
            @name  = name + '[]'
            @klass = Attributes::EnumSet.lookup(name, enum_klass)

            @set_klass = self
            @enum_klass = enum_klass
          end

          def type
            :enum_set
          end

          def deserialize(value)
            return unless value.present?
            value = value[1..-2].split(',') if value.is_a?(String)
            cast_value(value)
          end

          def serialize(value)
            return if value.blank?
            value = cast_value(value)

            return if value.blank?
            "{#{value.map(&:to_s).join(',')}}"
          end

          # Always use symbol values for schema dumper
          def type_cast_for_schema(value)
            cast_value(value).map(&:to_sym).inspect
          end

          private

            def cast_value(value)
              return if value.blank?
              return value if value.is_a?(@klass)
              @klass.new(value)
            rescue Attributes::EnumSet::EnumSetError
              nil
            end

        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
torque-postgresql-1.1.8 lib/torque/postgresql/adapter/oid/enum_set.rb
torque-postgresql-1.1.7 lib/torque/postgresql/adapter/oid/enum_set.rb
torque-postgresql-2.0.3 lib/torque/postgresql/adapter/oid/enum_set.rb
torque-postgresql-2.0.2 lib/torque/postgresql/adapter/oid/enum_set.rb
torque-postgresql-1.1.6 lib/torque/postgresql/adapter/oid/enum_set.rb
torque-postgresql-1.1.5 lib/torque/postgresql/adapter/oid/enum_set.rb
torque-postgresql-2.0.1 lib/torque/postgresql/adapter/oid/enum_set.rb
torque-postgresql-2.0.0 lib/torque/postgresql/adapter/oid/enum_set.rb
torque-postgresql-1.1.4 lib/torque/postgresql/adapter/oid/enum_set.rb
torque-postgresql-1.1.3 lib/torque/postgresql/adapter/oid/enum_set.rb
torque-postgresql-1.1.2 lib/torque/postgresql/adapter/oid/enum_set.rb
torque-postgresql-1.1.1 lib/torque/postgresql/adapter/oid/enum_set.rb
torque-postgresql-1.1.0 lib/torque/postgresql/adapter/oid/enum_set.rb