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