active_record-log_deleted 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bffe9549ed5ab620b57a5a098fa369263c52236749b186671c30c1afd9a1ac1e
4
- data.tar.gz: 7dcefc7b5d7d93148882267ec67a7ca276856743da9a5b4b0ebd519d6730b3f2
3
+ metadata.gz: 9803c59ea8139a5646a2979a295568dba8c1235b6647cb2a5bafcb74c4b0f83e
4
+ data.tar.gz: 2b082ff16bc9743acc0ede7d40bc2996bbfce2b376a08b1ed1c4dd422b04f59f
5
5
  SHA512:
6
- metadata.gz: 52ae0e41b2752475b49b64b8cd4b8c2748ce45638204a4f35faeeb70ed8be7c405999f75987683d007f929d376902afca1dae866e00d1b2de9dd492a5b7cdd55
7
- data.tar.gz: 51b5e460988b8dedbb553e484cf55c3056f220e28320e8a223b9846e71c4fdbd31ab5aa0bebcb21511855d5c33d32fd80e73deea1b177d2ab6485abd6c24b874
6
+ metadata.gz: 2d7554dbbd905fe085ccbee112b2a5027a0b841ba9e4eacf59cf249fbfb45b80e873247b1ba0da2aa0d1138d10363b933f5e6fcd8756fc0fbaaf99cdb6ac173e
7
+ data.tar.gz: 9efee34f63b94c1c3f7be395026494f859edd85c9b9671c5d921d0aa41d9c8f6b1b1ab136058bea5a14917b667b850815a2a467684974e782d45b62209dc05fa
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_record-log_deleted (0.1.0)
4
+ active_record-log_deleted (0.2.0)
5
5
  activerecord (>= 5.2, < 7.0)
6
6
  pg
7
7
 
@@ -1,12 +1,18 @@
1
1
  module ActiveRecord
2
2
  module LogDeleted
3
3
  class Configuration
4
- attr_reader :deleted_rows_table_name, :log_deleted_row_function_name, :log_deleted_row_trigger_name
4
+ attr_reader(
5
+ :deleted_rows_table_name,
6
+ :log_deleted_row_function_name,
7
+ :log_deleted_row_trigger_name,
8
+ :support_uuids
9
+ )
5
10
 
6
11
  def initialize
7
12
  @deleted_rows_table_name = :deleted_rows
8
13
  @log_deleted_row_function_name = :log_deleted_row
9
14
  @log_deleted_row_trigger_name = :log_deleted_row_trigger
15
+ @support_uuids = true
10
16
  end
11
17
 
12
18
  def deleted_rows_table_name=(name)
@@ -21,6 +27,10 @@ module ActiveRecord
21
27
  @log_deleted_row_trigger_name = sanitize(name)
22
28
  end
23
29
 
30
+ def support_uuids=(value)
31
+ @support_uuids = value
32
+ end
33
+
24
34
  private
25
35
 
26
36
  def sanitize(value)
@@ -4,10 +4,11 @@ module ActiveRecord
4
4
  module LogDeleted
5
5
  module PostgreSQLAdapter
6
6
  def create_deleted_rows_table
7
+ old_primary_key_type = configuration.support_uuids ? :string : :bigint
7
8
  create_table deleted_rows_table_name do |t|
8
9
  t.datetime :created_at, comment: 'The datetime at which the record was created.'
9
10
  t.text :old_row_json, comment: 'JSON with the entire row that was hard deleted.'
10
- t.string :primary_key, comment: 'The primary key of the row which was hard deleted.'
11
+ t.send old_primary_key_type, :primary_key, comment: 'The primary key of the row which was hard deleted.'
11
12
  t.string :table_name, limit: 255, comment: 'The table name from which the row was hard deleted.'
12
13
  end
13
14
  end
@@ -22,7 +23,7 @@ module ActiveRecord
22
23
  BEGIN
23
24
  INSERT INTO
24
25
  deleted_rows(table_name, primary_key, old_row_json, created_at)
25
- VALUES (TG_TABLE_NAME, OLD.id::varchar, ROW_TO_JSON(OLD), now());
26
+ VALUES (TG_TABLE_NAME, #{old_primary_key('OLD')}, ROW_TO_JSON(OLD), now());
26
27
  RETURN OLD;
27
28
  END;
28
29
  $$ LANGUAGE plpgsql;
@@ -30,7 +31,9 @@ module ActiveRecord
30
31
  end
31
32
 
32
33
  def drop_log_deleted_row_function
33
- execute "DROP FUNCTION #{log_deleted_row_function_name};"
34
+ execute <<~SQL
35
+ DROP FUNCTION IF EXISTS #{log_deleted_row_function_name}();
36
+ SQL
34
37
  end
35
38
 
36
39
  def create_deleted_row_trigger(table_name)
@@ -47,6 +50,12 @@ module ActiveRecord
47
50
 
48
51
  private
49
52
 
53
+ def old_primary_key(table)
54
+ value = "#{table}.id"
55
+ value += '::varchar' if configuration.support_uuids
56
+ value
57
+ end
58
+
50
59
  def log_deleted_row_trigger_name
51
60
  configuration.log_deleted_row_trigger_name
52
61
  end
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module LogDeleted
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record-log_deleted
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - matthew fong
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-12 00:00:00.000000000 Z
11
+ date: 2020-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake