class PGTrunk::Operations::CheckConstraints::AddCheckConstraint
@private
Public Instance Methods
invert()
click to toggle source
# File lib/pg_trunk/operations/check_constraints/add_check_constraint.rb, line 83 def invert DropCheckConstraint.new(**to_h) end
to_sql(_version)
click to toggle source
# File lib/pg_trunk/operations/check_constraints/add_check_constraint.rb, line 79 def to_sql(_version) [add_constraint, *add_comment, register_constraint].compact.join(" ") end
Private Instance Methods
add_comment()
click to toggle source
# File lib/pg_trunk/operations/check_constraints/add_check_constraint.rb, line 96 def add_comment return if comment.blank? <<~SQL COMMENT ON CONSTRAINT #{name.lean.inspect} ON #{table.to_sql} IS $comment$#{comment}$comment$; SQL end
add_constraint()
click to toggle source
# File lib/pg_trunk/operations/check_constraints/add_check_constraint.rb, line 89 def add_constraint sql = "ALTER TABLE #{table.to_sql} ADD CONSTRAINT #{name.name.inspect}" sql << " CHECK (#{expression})" sql << " NO INHERIT" unless inherit sql << ";" end
register_constraint()
click to toggle source
Rely on the fact the (schema.table, schema.name) is unique
# File lib/pg_trunk/operations/check_constraints/add_check_constraint.rb, line 106 def register_constraint <<~SQL INSERT INTO pg_trunk (oid, classid) SELECT c.oid, 'pg_constraint'::regclass FROM pg_constraint c JOIN pg_class r ON r.oid = c.conrelid WHERE r.relname = #{table.quoted} AND r.relnamespace = #{table.namespace} AND c.conname = #{name.quoted} ON CONFLICT DO NOTHING; SQL end