class PGTrunk::Operations::Domains::CreateDomain
@private
Public Instance Methods
invert()
click to toggle source
# File lib/pg_trunk/operations/domains/create_domain.rb, line 91 def invert DropDomain.new(**to_h) end
to_sql(_version)
click to toggle source
# File lib/pg_trunk/operations/domains/create_domain.rb, line 87 def to_sql(_version) [create_domain, *create_comment, register_domain].join(" ") end
Private Instance Methods
create_comment()
click to toggle source
# File lib/pg_trunk/operations/domains/create_domain.rb, line 109 def create_comment return if comment.blank? "COMMENT ON DOMAIN #{name.to_sql} IS $comment$#{comment}$comment$;" end
create_domain()
click to toggle source
# File lib/pg_trunk/operations/domains/create_domain.rb, line 97 def create_domain sql = "CREATE DOMAIN #{name.to_sql} AS #{type.to_sql}" sql << " COLLATE #{collation.to_sql}" if collation.present? sql << " DEFAULT #{default_sql}" if default_sql.present? sql << " NOT NULL" if null == false constraints&.each do |c| sql << " CONSTRAINT #{c.name.inspect}" if c.name.present? sql << " CHECK (#{c.check})" end sql << ";" end
register_domain()
click to toggle source
# File lib/pg_trunk/operations/domains/create_domain.rb, line 115 def register_domain <<~SQL.squish INSERT INTO pg_trunk (oid, classid) SELECT oid, 'pg_type'::regclass FROM pg_type WHERE typname = #{name.quoted} AND typnamespace = #{name.namespace} AND typtype = 'd' ON CONFLICT DO NOTHING; SQL end