HornsAndHooves/pg_saurus

View on GitHub
lib/pg_saurus/schema_dumper/trigger_methods.rb

Summary

Maintainability
A
1 hr
Test Coverage
# Support for dumping database triggers.
module PgSaurus::SchemaDumper::TriggerMethods

  # :nodoc
  def tables(stream)
    super(stream)

    dump_triggers(stream)
    stream.puts

    stream
  end

  # Write out a command to create each detected trigger.
  def dump_triggers(stream)
    @connection.triggers.each do |trigger|
      statement = "  create_trigger '#{trigger.table}', '#{trigger.proc_name}', '#{trigger.event}', " \
        "name: '#{trigger.name}', " \
        "constraint: #{trigger.constraint ? :true : :false}, " \
        "for_each: :#{trigger.for_each}, " \
        "deferrable: #{trigger.deferrable ? :true : :false}, " \
        "initially_deferred: #{trigger.initially_deferred ? :true : :false}, " \
        "schema: '#{trigger.schema}'"

      if trigger.condition
        statement << %Q{, condition: '#{trigger.condition.gsub("'", %q(\\\'))}'}
      end

      stream.puts "#{statement}\n"
    end
  end

end