Module: SchemaPlus::Triggers::ActiveRecord::ConnectionAdapters::PostgresqlAdapter
- Defined in:
- lib/schema_plus/triggers/active_record/connection_adapters/postgresql_adapter.rb
Instance Method Summary collapse
-
#trigger_definition(table_name, trigger_name, name = nil) ⇒ Object
:nodoc:.
-
#triggers(name = nil) ⇒ Object
:nodoc:.
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" |