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