Module: Procedural::Adapters::PostgreSQLAdapter

Defined in:
lib/procedural/adapters/postgresql_adapter.rb

Instance Method Summary collapse

Instance Method Details

#create_procedure(*args) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/procedural/adapters/postgresql_adapter.rb', line 5

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("CREATE OR REPLACE FUNCTION \#{quote_column_name(procedure_name)}()\n  RETURNS \#{returns}\n  LANGUAGE \#{language}\nAS $$\n  BEGIN\n    \#{sql}\n  END\n$$\n")
end

#create_trigger(*args) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'lib/procedural/adapters/postgresql_adapter.rb', line 31

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) ⇒ Object



25
26
27
28
29
# File 'lib/procedural/adapters/postgresql_adapter.rb', line 25

def drop_procedure(*args)
  procedure_name = args.shift

  execute("DROP FUNCTION IF EXISTS #{quote_column_name(procedure_name)}()")
end

#drop_trigger(*args) ⇒ Object



41
42
43
44
45
46
# File 'lib/procedural/adapters/postgresql_adapter.rb', line 41

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