class PGTrunk::Operations::Rules::CreateRule
@private
Public Instance Methods
invert()
click to toggle source
# File lib/pg_trunk/operations/rules/create_rule.rb, line 118 def invert irreversible!("replace_existing: true") if replace_existing DropRule.new(**to_h) end
to_sql(_server_version)
click to toggle source
# File lib/pg_trunk/operations/rules/create_rule.rb, line 114 def to_sql(_server_version) [create_rule, *comment_rule, register_rule].join(" ") end
Private Instance Methods
comment_rule()
click to toggle source
# File lib/pg_trunk/operations/rules/create_rule.rb, line 136 def comment_rule <<~SQL.squish if comment.present? COMMENT ON RULE #{name.to_sql} ON #{table.to_sql}#{' '} IS $comment$#{comment}$comment$; SQL end
create_rule()
click to toggle source
# File lib/pg_trunk/operations/rules/create_rule.rb, line 125 def create_rule sql = "CREATE" sql << " OR REPLACE" if replace_existing sql << " RULE #{name.to_sql} AS ON #{event.to_s.upcase}" sql << " TO #{table.to_sql}" sql << " WHERE #{where}" if where.present? sql << " DO #{kind == :instead ? 'INSTEAD' : 'ALSO'}" sql << " #{command.presence || 'NOTHING'}" sql << ";" end
register_rule()
click to toggle source
# File lib/pg_trunk/operations/rules/create_rule.rb, line 143 def register_rule <<~SQL.squish INSERT INTO pg_trunk (oid, classid) SELECT r.oid, 'pg_rewrite'::regclass FROM pg_rewrite r JOIN pg_class c ON c.oid = r.ev_class WHERE r.rulename = #{name.quoted} AND c.relname = '#{table.name}' AND c.relnamespace = #{table.namespace} ON CONFLICT DO NOTHING; SQL end