module Procedural::Adapters::PostgreSQLAdapter

Public Instance Methods

create_procedure(*args) { || ... } click to toggle source
# File lib/procedural/adapters/postgresql_adapter.rb, line 4
      def create_procedure(*args)
        options = args.extract_options!

        procedure_name = args.shift
        language = options.fetch(:language)
        returns = options.fetch(:returns)
        sql = options.fetch(:sql) { yield }

        execute(<<-SQL)
CREATE OR REPLACE FUNCTION #{quote_column_name(procedure_name)}()
  RETURNS #{returns}
  LANGUAGE #{language}
AS $$
  BEGIN
    #{sql}
  END
$$
SQL
      end
create_trigger(*args) click to toggle source
# File lib/procedural/adapters/postgresql_adapter.rb, line 30
def create_trigger(*args)
  options = args.extract_options!

  table_name = args.shift
  trigger_name = args.shift
  procedure_name = args.shift

  execute("CREATE TRIGGER #{quote_column_name(trigger_name)} BEFORE INSERT OR UPDATE ON #{quote_table_name(table_name)} FOR EACH ROW EXECUTE PROCEDURE #{quote_column_name(procedure_name)}()")
end
drop_procedure(*args) click to toggle source
# File lib/procedural/adapters/postgresql_adapter.rb, line 24
def drop_procedure(*args)
  procedure_name = args.shift

  execute("DROP FUNCTION IF EXISTS #{quote_column_name(procedure_name)}()")
end
drop_trigger(*args) click to toggle source
# File lib/procedural/adapters/postgresql_adapter.rb, line 40
def drop_trigger(*args)
  table_name = args.shift
  trigger_name = args.shift

  execute("DROP TRIGGER IF EXISTS #{quote_column_name(trigger_name)} ON #{quote_table_name(table_name)}")
end