Module: ActiveRecord::LogDeleted::PostgreSQLAdapter
- Defined in:
- lib/active_record/log_deleted/postgresql_adapter.rb
Instance Method Summary collapse
- #create_deleted_row_trigger(table_name) ⇒ Object
- #create_deleted_rows_table ⇒ Object
- #create_log_deleted_row_function ⇒ Object
- #drop_deleted_row_trigger(table_name) ⇒ Object
- #drop_deleted_rows_table ⇒ Object
- #drop_log_deleted_row_function ⇒ Object
Instance Method Details
#create_deleted_row_trigger(table_name) ⇒ Object
39 40 41 42 43 |
# File 'lib/active_record/log_deleted/postgresql_adapter.rb', line 39 def create_deleted_row_trigger(table_name) execute " create trigger \#{log_deleted_row_trigger_name} after delete on \#{ActiveRecord::Base.sanitize_sql(table_name)} for each row execute procedure \#{log_deleted_row_function_name}();\n SQL\nend\n" |
#create_deleted_rows_table ⇒ Object
6 7 8 9 10 11 12 13 14 |
# File 'lib/active_record/log_deleted/postgresql_adapter.rb', line 6 def create_deleted_rows_table old_primary_key_type = configuration.support_uuids ? :string : :bigint create_table deleted_rows_table_name do |t| t.datetime :created_at, comment: 'The datetime at which the record was created.' t.text :old_row_json, comment: 'JSON with the entire row that was hard deleted.' t.send old_primary_key_type, :primary_key, comment: 'The primary key of the row which was hard deleted.' t.string :table_name, limit: 255, comment: 'The table name from which the row was hard deleted.' end end |
#create_log_deleted_row_function ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/active_record/log_deleted/postgresql_adapter.rb', line 20 def create_log_deleted_row_function execute " CREATE OR REPLACE FUNCTION \#{log_deleted_row_function_name}() RETURNS trigger AS $$\n BEGIN\n INSERT INTO\n deleted_rows(table_name, primary_key, old_row_json, created_at)\n VALUES (TG_TABLE_NAME, \#{old_primary_key('OLD')}, ROW_TO_JSON(OLD), now());\n RETURN OLD;\n END;\n $$ LANGUAGE plpgsql;\n SQL\nend\n" |
#drop_deleted_row_trigger(table_name) ⇒ Object
45 46 47 48 49 |
# File 'lib/active_record/log_deleted/postgresql_adapter.rb', line 45 def drop_deleted_row_trigger(table_name) execute " drop trigger if exists \#{log_deleted_row_trigger_name} on \#{ActiveRecord::Base.sanitize_sql(table_name)};\n SQL\nend\n" |
#drop_deleted_rows_table ⇒ Object
16 17 18 |
# File 'lib/active_record/log_deleted/postgresql_adapter.rb', line 16 def drop_deleted_rows_table drop_table deleted_rows_table_name end |
#drop_log_deleted_row_function ⇒ Object
33 34 35 36 37 |
# File 'lib/active_record/log_deleted/postgresql_adapter.rb', line 33 def drop_log_deleted_row_function execute " DROP FUNCTION IF EXISTS \#{log_deleted_row_function_name}();\n SQL\nend\n" |