class PGTrunk::Operations::Triggers::ChangeTrigger
@private
Public Instance Methods
invert()
click to toggle source
# File lib/pg_trunk/operations/triggers/change_trigger.rb, line 44 def invert irreversible!("if_exists: true") if if_exists undefined = inversion.select { |_, v| v.nil? }.keys.join(", ").presence raise IrreversibleMigration.new(self, nil, <<~MSG.squish) if undefined Undefined values to revert #{undefined}. MSG self.class.new(**inversion, table: table, name: name) end
to_sql(server_version)
click to toggle source
# File lib/pg_trunk/operations/triggers/change_trigger.rb, line 38 def to_sql(server_version) return create_trigger&.to_sql(server_version) if server_version >= "14" raise "The operation is supported by PostgreSQL server v14+" end
Private Instance Methods
changes()
click to toggle source
# File lib/pg_trunk/operations/triggers/change_trigger.rb, line 56 def changes @changes ||= { type: type.presence, events: events.presence, columns: columns.presence, constraint: constraint, for_each: for_each, function: function.presence, initially: initially, when: self.when.presence, comment: comment, }.compact end
create_trigger()
click to toggle source
# File lib/pg_trunk/operations/triggers/change_trigger.rb, line 78 def create_trigger return if name.blank? || table.blank? @create_trigger ||= CreateTrigger .find { |o| o.name == name && o.table == table } &.tap { |o| o.attributes = { **changes, replace_existing: true } } end
inversion()
click to toggle source
# File lib/pg_trunk/operations/triggers/change_trigger.rb, line 70 def inversion changes .each_with_object({}) { |(k, _), obj| obj[k] = send(:"from_#{k}") } .tap do |i| i[:for_each] ||= (%i[statement row] - [for_each]).first if for_each end end