Module: SchemaPlus::Triggers::ActiveRecord::ConnectionAdapters::PostgresqlAdapter

Defined in:
lib/schema_plus/triggers/active_record/connection_adapters/postgresql_adapter.rb

Instance Method Summary collapse

Instance Method Details

#trigger_definition(table_name, trigger_name, name = nil) ⇒ Object

:nodoc:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/schema_plus/triggers/active_record/connection_adapters/postgresql_adapter.rb', line 22

def trigger_definition(table_name, trigger_name, name = nil) #:nodoc:
  data = SchemaMonkey::Middleware::Schema::TriggerDefinition.start(connection: self, table_name: table_name, trigger_name: trigger_name, query_name: name) do |env|
    result = env.connection.query("    SELECT pg_get_triggerdef(T.oid)\n      FROM pg_trigger T\n      JOIN pg_class C ON C.oid = T.tgrelid\n    WHERE tgisinternal = FALSE\n      AND relnamespace IN (SELECT oid FROM pg_namespace WHERE nspname = ANY (current_schemas(false)))\n      AND tgname = '\#{quote_string(trigger_name)}'\n      AND relname = '\#{quote_string(table_name)}'\n    SQL\n\n    row = result.first\n    unless row.nil?\n      sql = row.first\n\n      m = sql.match(/CREATE.+?TRIGGER\\s+\"?\\w+\"?\\s+(.+?) ON\\s+[\\w\\.\"]+\\s+(.+)/)\n\n      env.trigger    = m[1]\n      env.definition = m[2]\n    end\n  end\n\n  return data.trigger, data.definition\nend\n", env.query_name)

#triggers(name = nil) ⇒ Object

:nodoc:



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/schema_plus/triggers/active_record/connection_adapters/postgresql_adapter.rb', line 7

def triggers(name = nil) #:nodoc:
  SchemaMonkey::Middleware::Schema::Triggers.start(connection: self, query_name: name, triggers: []) do |env|
    sql = "    SELECT relname as table_name, tgname as trigger_name\n      FROM pg_trigger T\n      JOIN pg_class C ON C.oid = T.tgrelid\n    WHERE tgisinternal = FALSE\n      AND relnamespace IN (SELECT oid FROM pg_namespace WHERE nspname = ANY (current_schemas(false)))\n    ORDER BY 1, 2\n    SQL\n\n    env.triggers += env.connection.query(sql, env.query_name).map { |row| [row[0], row[1]] }\n  end.triggers\nend\n"