Module: PgRls::ActiveRecord::ConnectionAdapters::PostgreSQL::RlsTriggers
- Includes:
- SqlHelperMethod
- Defined in:
- lib/pg_rls/active_record/connection_adapters/postgre_sql/rls_triggers.rb
Overview
This module contains the logic to create, drop and validate RLS functions
Instance Method Summary collapse
- #append_rls_table_triggers(table_name, schema = PgRls.schema) ⇒ Object
- #append_tenant_table_triggers(table_name, schema = PgRls.schema) ⇒ Object
- #drop_rls_table_triggers(table_name, schema = PgRls.schema) ⇒ Object
- #drop_tenant_table_triggers(table_name, schema = PgRls.schema) ⇒ Object
- #trigger_exists?(table_name, function_name, schema = PgRls.schema) ⇒ Boolean
Instance Method Details
#append_rls_table_triggers(table_name, schema = PgRls.schema) ⇒ Object
25 26 27 28 |
# File 'lib/pg_rls/active_record/connection_adapters/postgre_sql/rls_triggers.rb', line 25 def append_rls_table_triggers(table_name, schema = PgRls.schema) create_tenant_id_setter_trigger(schema, table_name) create_tenant_id_update_blocker_trigger(schema, table_name) end |
#append_tenant_table_triggers(table_name, schema = PgRls.schema) ⇒ Object
21 22 23 |
# File 'lib/pg_rls/active_record/connection_adapters/postgre_sql/rls_triggers.rb', line 21 def append_tenant_table_triggers(table_name, schema = PgRls.schema) create_rls_exception_trigger(schema, table_name) end |
#drop_rls_table_triggers(table_name, schema = PgRls.schema) ⇒ Object
34 35 36 37 |
# File 'lib/pg_rls/active_record/connection_adapters/postgre_sql/rls_triggers.rb', line 34 def drop_rls_table_triggers(table_name, schema = PgRls.schema) drop_trigger(schema, table_name, "#{schema}_#{table_name}_tenant_id_setter_trigger") drop_trigger(schema, table_name, "#{schema}_#{table_name}_tenant_id_update_blocker_trigger") end |
#drop_tenant_table_triggers(table_name, schema = PgRls.schema) ⇒ Object
30 31 32 |
# File 'lib/pg_rls/active_record/connection_adapters/postgre_sql/rls_triggers.rb', line 30 def drop_tenant_table_triggers(table_name, schema = PgRls.schema) drop_trigger(schema, table_name, "#{schema}_#{table_name}_rls_exception_trigger") end |
#trigger_exists?(table_name, function_name, schema = PgRls.schema) ⇒ Boolean
11 12 13 14 15 16 17 18 19 |
# File 'lib/pg_rls/active_record/connection_adapters/postgre_sql/rls_triggers.rb', line 11 def trigger_exists?(table_name, function_name, schema = PgRls.schema) query = <<~SQL SELECT 1 FROM pg_trigger WHERE tgname = '#{schema}_#{table_name}_#{function_name}_trigger'; SQL execute_sql!(query).any? end |