module PGTrunk::CustomTypes

@private The module adds custom type casting

Constants

TYPE

All custom types are typecasted to strings in Rails

Public Class Methods

known() click to toggle source
# File lib/pg_trunk/core/railtie/custom_types.rb, line 10
def self.known
  @known ||= Set.new([])
end

Public Instance Methods

enable_pg_trunk_type(oid:, name:) click to toggle source
# File lib/pg_trunk/core/railtie/custom_types.rb, line 27
def enable_pg_trunk_type(oid:, name:)
  CustomTypes.known << name
  type_map.register_type(oid.to_i, TYPE.new(name.to_s))
end
enable_pg_trunk_types() click to toggle source
# File lib/pg_trunk/core/railtie/custom_types.rb, line 14
    def enable_pg_trunk_types
      execute(<<~SQL).each { |item| enable_pg_trunk_type(**item.symbolize_keys) }
        SELECT (
          CASE
          WHEN t.typnamespace = 'public'::regnamespace THEN t.typname
          ELSE t.typnamespace::regnamespace || '.' || t.typname
          END
        ) AS name, t.oid
        FROM pg_trunk e JOIN pg_type t ON t.oid = e.oid
        WHERE e.classid = 'pg_type'::regclass
      SQL
    end
valid_type?(type) click to toggle source
Calls superclass method
# File lib/pg_trunk/core/railtie/custom_types.rb, line 32
def valid_type?(type)
  CustomTypes.known.include?(type.to_s) || super
end