class PGTrunk::Operations::Procedures::ChangeProcedure
@private
Public Instance Methods
invert()
click to toggle source
# File lib/pg_trunk/operations/procedures/change_procedure.rb, line 74 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, name: name) end
to_sql(version)
click to toggle source
# File lib/pg_trunk/operations/procedures/change_procedure.rb, line 67 def to_sql(version) check_version!(version) # Use `CREATE OR REPLACE FUNCTION` to make changes create_procedure&.to_sql(version) end
Private Instance Methods
changes()
click to toggle source
# File lib/pg_trunk/operations/procedures/change_procedure.rb, line 98 def changes @changes ||= { body: body.presence, comment: comment, security: security, }.compact end
create_procedure()
click to toggle source
# File lib/pg_trunk/operations/procedures/change_procedure.rb, line 86 def create_procedure return if name.blank? @create_procedure ||= begin list = CreateProcedure.select { |obj| name.maybe_eq?(obj.name) } list.select! { |obj| name == obj.name } if list.size > 1 && name.args list.first&.tap do |op| op.attributes = { **changes, replace_existing: true } end end end
inversion()
click to toggle source
# File lib/pg_trunk/operations/procedures/change_procedure.rb, line 106 def inversion @inversion ||= { body: [body, from_body], comment: [comment, from_comment], security: [security, (%i[invoker definer] - [security]).first], }.slice(*changes.keys).transform_values(&:last) end