waldit 0.0.18 → 0.0.20

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: 3192e05c01650c028985e4aea31a11093467a42faf0d5fc31183b374d4946621
4
- data.tar.gz: 789f7c8e0c667adad9125f2451bc72b6385bb857f88c2373ffb9589f70f708f0
3
+ metadata.gz: e89f236a107159502d3d667c1073d39152cee8ba5923f3ef2a7f008e6ae78814
4
+ data.tar.gz: 1bc36fdd5dd1580f5ebbf3bc8cbe301cc6a9be74d467c561998289fe6d38e84e
5
5
  SHA512:
6
- metadata.gz: 2069f38e94beed8f16ed3076f4837f28fe8606dc4e287ccff0f1ad3519f056db2da4b2e90104b9bc19fc171e584dbdb29d138520f29e511367d0d60b598595bb
7
- data.tar.gz: bd1f862465148c5d997d98ebef1662d7447b4be5dbbf38b70a74a35ef3f78e3d6b9951466f3212859c68bf1014fc2e27bfd733a4f9d51f5723987bbdfbb120d6
6
+ metadata.gz: ebf0fe008ddcc05e90ec6d6931a22153a45c58d7f73f94b01af3d7a33ba23406dd99a38b265d932b764ce0db38ca36f7c2df37a74c194d97b3b1a79df78a8e21
7
+ data.tar.gz: 9b4abee181b3c3a04399c7e2614018c9bc9bc65026cd6c28e89e3b74a7c47a4e3262cfbea882d59cf725a26f98c6f13d6dc2419c61ab6b5c7d871e2c6c62b361
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Waldit
4
- VERSION = "0.0.18"
4
+ VERSION = "0.0.20"
5
5
  end
@@ -52,16 +52,22 @@ module Waldit
52
52
  .map { |diff| [diff, tables.filter { |table| Waldit.store_changes.call(table).include? diff }] }
53
53
  .to_h
54
54
 
55
- log_new = (changes[:new] || []).map { |table| "#{table}" }.join(",")
56
- log_old = (changes[:old] || []).map { |table| "#{table}" }.join(",")
57
- log_diff = (changes[:diff] || []).map { |table| "#{table}" }.join(",")
55
+ log_new = (changes[:new] || []).map { |table| "#{table}" }
56
+ log_old = (changes[:old] || []).map { |table| "#{table}" }
57
+ log_diff = (changes[:diff] || []).map { |table| "#{table}" }
58
58
 
59
59
  @connection.exec_prepared("waldit_finish", [
60
60
  event.transaction_id,
61
61
  event.timestamp,
62
- "{#{log_new}}",
63
- "{#{log_old}}",
64
- "{#{log_diff}}",
62
+ "{#{log_new.join(",")}}",
63
+ "{#{log_old.join(",")}}",
64
+ "{#{log_diff.join(",")}}",
65
+ ])
66
+
67
+ @connection.exec_prepared("waldit_cleanup", [
68
+ event.transaction_id,
69
+ "{#{(log_new + log_old).join(",")}}",
70
+ "{#{log_diff.join(",")}}",
65
71
  ])
66
72
 
67
73
  # We sucessful retried a connection, let's reset our retry state
@@ -118,6 +124,7 @@ module Waldit
118
124
  prepare_delete
119
125
  prepare_delete_cleanup
120
126
  prepare_finish
127
+ prepare_cleanup
121
128
  end
122
129
 
123
130
  def prepare_insert
@@ -187,5 +194,20 @@ module Waldit
187
194
  SQL
188
195
  rescue PG::DuplicatePstatement
189
196
  end
197
+
198
+ def prepare_cleanup
199
+ @connection.prepare("waldit_cleanup", <<~SQL)
200
+ DELETE FROM #{record.table_name}
201
+ WHERE
202
+ transaction_id = $1
203
+ AND action = 'update'::waldit_action
204
+ AND (
205
+ (diff IS NULL AND table_name = ANY ($3::varchar[]))
206
+ OR
207
+ (new = old AND table_name = ANY ($2::varchar[]))
208
+ )
209
+ SQL
210
+ rescue PG::DuplicatePstatement
211
+ end
190
212
  end
191
213
  end
data/rbi/waldit.rbi CHANGED
@@ -2,7 +2,7 @@
2
2
  module Waldit
3
3
  extend T::Sig
4
4
  extend Waldit::Context
5
- VERSION = "0.0.18"
5
+ VERSION = "0.0.19"
6
6
 
7
7
  class << self
8
8
  sig { returns(String) }
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: waldit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.18
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Navarro
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-09-14 00:00:00.000000000 Z
10
+ date: 2025-10-16 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: wal