table_sync 6.10.0 → 6.11.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 +4 -4
- data/CHANGELOG.md +5 -1
- data/Gemfile.lock +15 -13
- data/lib/table_sync/instrument_adapter/active_support.rb +10 -2
- data/lib/table_sync/publishing/batch.rb +5 -3
- data/lib/table_sync/publishing/message/base.rb +4 -1
- data/lib/table_sync/publishing/message/raw.rb +4 -1
- data/lib/table_sync/publishing/message/single.rb +9 -1
- data/lib/table_sync/publishing/params/single.rb +2 -2
- data/lib/table_sync/publishing/raw.rb +5 -3
- data/lib/table_sync/publishing/single.rb +4 -1
- data/lib/table_sync/setup/active_record.rb +1 -0
- data/lib/table_sync/setup/base.rb +2 -1
- data/lib/table_sync/setup/sequel.rb +1 -0
- data/lib/table_sync/version.rb +1 -1
- data/lib/table_sync.rb +1 -0
- data/table_sync.gemspec +1 -1
- metadata +8 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4f639c5f219e99ba00d508a19d652a617df44dc630c86e29233f6269a9d09650
|
|
4
|
+
data.tar.gz: 7645c878d05b076b871eb8f5ddb5c49092d7b8210c4c6b9f38f489fe3fcffadb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3b30d8bbb0562afc16d85290fe91c7c46c95a99438743fb5183cfbfc15d2adb784a987d074704a5437a7453122f1b2f514113c10363e6c9803faab51762a26f4
|
|
7
|
+
data.tar.gz: a9e9a8cc3d8e98acfcb39abc7d8cbba7ed2b5394e7ef6f0707ea9b04da048382c2ecd8c87526dfc9f6b9a512587e8915627c4fce03539d6df25aef88a7eac3f0
|
data/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
|
|
4
|
+
## [6.11.0] - 2026-03-25
|
|
5
|
+
### Added
|
|
6
|
+
- Ability to specify option for compression when publish data
|
|
7
|
+
|
|
4
8
|
## [6.10.0] - 2025-11-21
|
|
5
|
-
###
|
|
9
|
+
### Added
|
|
6
10
|
- Add on_first_sync callback
|
|
7
11
|
|
|
8
12
|
## [6.9.3] - 2025-10-09
|
data/Gemfile.lock
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
table_sync (6.
|
|
4
|
+
table_sync (6.11.0)
|
|
5
5
|
memery
|
|
6
|
-
rabbit_messaging (>= 1.
|
|
6
|
+
rabbit_messaging (>= 1.8.0)
|
|
7
7
|
rails
|
|
8
8
|
self_data
|
|
9
9
|
|
|
@@ -81,9 +81,9 @@ GEM
|
|
|
81
81
|
minitest (>= 5.1)
|
|
82
82
|
securerandom (>= 0.3)
|
|
83
83
|
tzinfo (~> 2.0, >= 2.0.5)
|
|
84
|
-
amq-protocol (2.
|
|
84
|
+
amq-protocol (2.7.0)
|
|
85
85
|
ast (2.4.3)
|
|
86
|
-
base64 (0.
|
|
86
|
+
base64 (0.3.0)
|
|
87
87
|
benchmark (0.4.0)
|
|
88
88
|
bigdecimal (3.1.9)
|
|
89
89
|
builder (3.3.0)
|
|
@@ -92,7 +92,7 @@ GEM
|
|
|
92
92
|
sorted_set (~> 1, >= 1.0.2)
|
|
93
93
|
cgi (0.5.0)
|
|
94
94
|
coderay (1.1.3)
|
|
95
|
-
concurrent-ruby (1.3.
|
|
95
|
+
concurrent-ruby (1.3.6)
|
|
96
96
|
connection_pool (2.5.3)
|
|
97
97
|
crass (1.0.6)
|
|
98
98
|
date (3.5.0)
|
|
@@ -112,8 +112,8 @@ GEM
|
|
|
112
112
|
rdoc (>= 4.0.0)
|
|
113
113
|
reline (>= 0.4.2)
|
|
114
114
|
json (2.12.2)
|
|
115
|
-
kicks (3.
|
|
116
|
-
bunny (~> 2.
|
|
115
|
+
kicks (3.3.0)
|
|
116
|
+
bunny (~> 2.24)
|
|
117
117
|
concurrent-ruby (~> 1.0)
|
|
118
118
|
rake (>= 12.3, < 14.0)
|
|
119
119
|
serverengine (~> 2.1)
|
|
@@ -136,6 +136,7 @@ GEM
|
|
|
136
136
|
mini_mime (1.1.5)
|
|
137
137
|
mini_portile2 (2.8.9)
|
|
138
138
|
minitest (5.25.5)
|
|
139
|
+
msgpack (1.8.0)
|
|
139
140
|
net-imap (0.5.12)
|
|
140
141
|
date
|
|
141
142
|
net-protocol
|
|
@@ -181,9 +182,11 @@ GEM
|
|
|
181
182
|
psych (5.2.6)
|
|
182
183
|
date
|
|
183
184
|
stringio
|
|
184
|
-
rabbit_messaging (1.
|
|
185
|
+
rabbit_messaging (1.8.0)
|
|
185
186
|
bunny (~> 2.0)
|
|
186
187
|
kicks
|
|
188
|
+
msgpack
|
|
189
|
+
zlib
|
|
187
190
|
racc (1.8.1)
|
|
188
191
|
rack (3.1.15)
|
|
189
192
|
rack-session (2.1.1)
|
|
@@ -223,7 +226,7 @@ GEM
|
|
|
223
226
|
thor (~> 1.0, >= 1.2.2)
|
|
224
227
|
zeitwerk (~> 2.6)
|
|
225
228
|
rainbow (3.1.1)
|
|
226
|
-
rake (13.
|
|
229
|
+
rake (13.3.1)
|
|
227
230
|
rbtree (0.4.6)
|
|
228
231
|
rdoc (6.15.1)
|
|
229
232
|
erb
|
|
@@ -298,7 +301,6 @@ GEM
|
|
|
298
301
|
base64 (~> 0.1)
|
|
299
302
|
logger (~> 1.4)
|
|
300
303
|
sigdump (~> 0.2.2)
|
|
301
|
-
set (1.1.2)
|
|
302
304
|
sigdump (0.2.5)
|
|
303
305
|
simplecov (0.22.0)
|
|
304
306
|
docile (~> 1.1)
|
|
@@ -307,11 +309,10 @@ GEM
|
|
|
307
309
|
simplecov-html (0.13.1)
|
|
308
310
|
simplecov-lcov (0.8.0)
|
|
309
311
|
simplecov_json_formatter (0.1.4)
|
|
310
|
-
sorted_set (1.0
|
|
312
|
+
sorted_set (1.1.0)
|
|
311
313
|
rbtree
|
|
312
|
-
set (~> 1.0)
|
|
313
314
|
stringio (3.1.8)
|
|
314
|
-
thor (1.
|
|
315
|
+
thor (1.5.0)
|
|
315
316
|
timecop (0.9.10)
|
|
316
317
|
timeout (0.4.3)
|
|
317
318
|
tsort (0.2.0)
|
|
@@ -326,6 +327,7 @@ GEM
|
|
|
326
327
|
websocket-extensions (>= 0.1.0)
|
|
327
328
|
websocket-extensions (0.1.5)
|
|
328
329
|
zeitwerk (2.6.18)
|
|
330
|
+
zlib (3.2.3)
|
|
329
331
|
|
|
330
332
|
PLATFORMS
|
|
331
333
|
aarch64-linux-gnu
|
|
@@ -4,13 +4,21 @@ module TableSync::InstrumentAdapter
|
|
|
4
4
|
module ActiveSupport
|
|
5
5
|
module_function
|
|
6
6
|
|
|
7
|
-
def notify(
|
|
7
|
+
def notify( # rubocop:disable Metrics/ParameterLists
|
|
8
|
+
table:,
|
|
9
|
+
schema:,
|
|
10
|
+
event:,
|
|
11
|
+
direction:,
|
|
12
|
+
count: 1,
|
|
13
|
+
compress: false
|
|
14
|
+
)
|
|
8
15
|
::ActiveSupport::Notifications.instrument "tablesync.#{direction}.#{event}",
|
|
9
16
|
count:,
|
|
10
17
|
table: table.to_s,
|
|
11
18
|
schema: schema.to_s,
|
|
12
19
|
event:,
|
|
13
|
-
direction
|
|
20
|
+
direction:,
|
|
21
|
+
compress:
|
|
14
22
|
end
|
|
15
23
|
end
|
|
16
24
|
end
|
|
@@ -6,7 +6,8 @@ class TableSync::Publishing::Batch
|
|
|
6
6
|
:custom_version,
|
|
7
7
|
:routing_key,
|
|
8
8
|
:headers,
|
|
9
|
-
:event
|
|
9
|
+
:event,
|
|
10
|
+
:compress
|
|
10
11
|
|
|
11
12
|
def initialize(attrs = {})
|
|
12
13
|
attrs = attrs.with_indifferent_access
|
|
@@ -15,8 +16,9 @@ class TableSync::Publishing::Batch
|
|
|
15
16
|
self.original_attributes = attrs[:original_attributes]
|
|
16
17
|
self.custom_version = attrs[:custom_version]
|
|
17
18
|
self.routing_key = attrs[:routing_key]
|
|
18
|
-
self.headers = attrs[:headers]
|
|
19
|
+
self.headers = attrs[:headers] || {}
|
|
19
20
|
self.event = attrs.fetch(:event, :update).to_sym
|
|
21
|
+
self.compress = attrs.fetch(:compress, false)
|
|
20
22
|
|
|
21
23
|
validate_required_attributes!
|
|
22
24
|
end
|
|
@@ -53,7 +55,7 @@ class TableSync::Publishing::Batch
|
|
|
53
55
|
original_attributes: original_attributes,
|
|
54
56
|
custom_version: custom_version,
|
|
55
57
|
routing_key: routing_key,
|
|
56
|
-
headers: headers,
|
|
58
|
+
headers: headers.merge(compress: compress),
|
|
57
59
|
event: event,
|
|
58
60
|
}
|
|
59
61
|
end
|
|
@@ -5,7 +5,8 @@ module TableSync::Publishing::Message
|
|
|
5
5
|
attr_accessor :custom_version,
|
|
6
6
|
:object_class,
|
|
7
7
|
:original_attributes,
|
|
8
|
-
:event
|
|
8
|
+
:event,
|
|
9
|
+
:compress
|
|
9
10
|
|
|
10
11
|
attr_reader :objects
|
|
11
12
|
|
|
@@ -14,6 +15,7 @@ module TableSync::Publishing::Message
|
|
|
14
15
|
self.object_class = params[:object_class]
|
|
15
16
|
self.original_attributes = params[:original_attributes]
|
|
16
17
|
self.event = params[:event].to_sym
|
|
18
|
+
self.compress = params.dig(:headers, :compress) || false
|
|
17
19
|
|
|
18
20
|
@objects = find_or_init_objects
|
|
19
21
|
|
|
@@ -65,6 +67,7 @@ module TableSync::Publishing::Message
|
|
|
65
67
|
table: model_naming.table,
|
|
66
68
|
schema: model_naming.schema,
|
|
67
69
|
event:,
|
|
70
|
+
compress:,
|
|
68
71
|
direction: :publish,
|
|
69
72
|
count: objects.count,
|
|
70
73
|
)
|
|
@@ -9,7 +9,8 @@ module TableSync::Publishing::Message
|
|
|
9
9
|
:routing_key,
|
|
10
10
|
:headers,
|
|
11
11
|
:custom_version,
|
|
12
|
-
:event
|
|
12
|
+
:event,
|
|
13
|
+
:compress
|
|
13
14
|
|
|
14
15
|
def initialize(params = {})
|
|
15
16
|
self.model_name = params[:model_name]
|
|
@@ -20,6 +21,7 @@ module TableSync::Publishing::Message
|
|
|
20
21
|
self.headers = params[:headers]
|
|
21
22
|
self.custom_version = params[:custom_version]
|
|
22
23
|
self.event = params[:event]
|
|
24
|
+
self.compress = params.dig(:headers, :compress) || false
|
|
23
25
|
end
|
|
24
26
|
|
|
25
27
|
def publish
|
|
@@ -35,6 +37,7 @@ module TableSync::Publishing::Message
|
|
|
35
37
|
table: table_name,
|
|
36
38
|
schema: schema_name,
|
|
37
39
|
event:,
|
|
40
|
+
compress: compress,
|
|
38
41
|
count: original_attributes.count,
|
|
39
42
|
direction: :publish,
|
|
40
43
|
)
|
|
@@ -2,12 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
module TableSync::Publishing::Message
|
|
4
4
|
class Single < Base
|
|
5
|
+
attr_accessor :headers
|
|
6
|
+
|
|
7
|
+
def initialize(params = {})
|
|
8
|
+
super
|
|
9
|
+
|
|
10
|
+
self.headers = params[:headers]
|
|
11
|
+
end
|
|
12
|
+
|
|
5
13
|
def object
|
|
6
14
|
objects.first
|
|
7
15
|
end
|
|
8
16
|
|
|
9
17
|
def params
|
|
10
|
-
TableSync::Publishing::Params::Single.new(object:).construct
|
|
18
|
+
TableSync::Publishing::Params::Single.new(object:, headers:).construct
|
|
11
19
|
end
|
|
12
20
|
end
|
|
13
21
|
end
|
|
@@ -4,10 +4,10 @@ module TableSync::Publishing::Params
|
|
|
4
4
|
class Single < Base
|
|
5
5
|
attr_reader :object, :routing_key, :headers
|
|
6
6
|
|
|
7
|
-
def initialize(object:)
|
|
7
|
+
def initialize(object:, headers: {})
|
|
8
8
|
@object = object
|
|
9
9
|
@routing_key = calculated_routing_key
|
|
10
|
-
@headers
|
|
10
|
+
@headers = headers.merge(calculated_headers || {})
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
private
|
|
@@ -10,7 +10,8 @@ class TableSync::Publishing::Raw
|
|
|
10
10
|
:custom_version,
|
|
11
11
|
:routing_key,
|
|
12
12
|
:headers,
|
|
13
|
-
:event
|
|
13
|
+
:event,
|
|
14
|
+
:compress
|
|
14
15
|
|
|
15
16
|
def initialize(attributes = {})
|
|
16
17
|
attributes = attributes.with_indifferent_access
|
|
@@ -21,8 +22,9 @@ class TableSync::Publishing::Raw
|
|
|
21
22
|
self.original_attributes = attributes[:original_attributes]
|
|
22
23
|
self.custom_version = attributes[:custom_version]
|
|
23
24
|
self.routing_key = attributes[:routing_key]
|
|
24
|
-
self.headers = attributes[:headers]
|
|
25
|
+
self.headers = attributes[:headers] || {}
|
|
25
26
|
self.event = attributes.fetch(:event, :update).to_sym
|
|
27
|
+
self.compress = attributes.fetch(:compress, false)
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
require_attributes :model_name, :original_attributes
|
|
@@ -45,7 +47,7 @@ class TableSync::Publishing::Raw
|
|
|
45
47
|
original_attributes: original_attributes,
|
|
46
48
|
custom_version: custom_version,
|
|
47
49
|
routing_key: routing_key,
|
|
48
|
-
headers: headers,
|
|
50
|
+
headers: headers.merge(compress: compress),
|
|
49
51
|
event: event,
|
|
50
52
|
}
|
|
51
53
|
end
|
|
@@ -7,7 +7,8 @@ class TableSync::Publishing::Single
|
|
|
7
7
|
:original_attributes,
|
|
8
8
|
:debounce_time,
|
|
9
9
|
:custom_version,
|
|
10
|
-
:event
|
|
10
|
+
:event,
|
|
11
|
+
:compress
|
|
11
12
|
|
|
12
13
|
def initialize(attrs = {})
|
|
13
14
|
attrs = attrs.with_indifferent_access
|
|
@@ -15,6 +16,7 @@ class TableSync::Publishing::Single
|
|
|
15
16
|
self.object_class = attrs[:object_class]
|
|
16
17
|
self.original_attributes = attrs[:original_attributes]
|
|
17
18
|
self.debounce_time = attrs[:debounce_time]
|
|
19
|
+
self.compress = attrs.fetch(:compress, false)
|
|
18
20
|
self.custom_version = attrs[:custom_version]
|
|
19
21
|
self.event = attrs.fetch(:event, :update)
|
|
20
22
|
end
|
|
@@ -55,6 +57,7 @@ class TableSync::Publishing::Single
|
|
|
55
57
|
original_attributes: original_attributes,
|
|
56
58
|
debounce_time: debounce_time,
|
|
57
59
|
custom_version: custom_version,
|
|
60
|
+
headers: { compress: compress },
|
|
58
61
|
event: event,
|
|
59
62
|
}
|
|
60
63
|
end
|
|
@@ -6,7 +6,7 @@ module TableSync::Setup
|
|
|
6
6
|
INVALID_EVENT = Class.new(StandardError)
|
|
7
7
|
INVALID_CONDITION = Class.new(StandardError)
|
|
8
8
|
|
|
9
|
-
attr_accessor :object_class, :debounce_time, :on, :if_condition, :unless_condition
|
|
9
|
+
attr_accessor :object_class, :debounce_time, :on, :if_condition, :unless_condition, :compress
|
|
10
10
|
|
|
11
11
|
def initialize(attrs = {})
|
|
12
12
|
attrs.each do |key, value|
|
|
@@ -57,6 +57,7 @@ module TableSync::Setup
|
|
|
57
57
|
if: if_condition,
|
|
58
58
|
unless: unless_condition,
|
|
59
59
|
debounce_time:,
|
|
60
|
+
compress: compress,
|
|
60
61
|
}
|
|
61
62
|
end
|
|
62
63
|
end
|
data/lib/table_sync/version.rb
CHANGED
data/lib/table_sync.rb
CHANGED
data/table_sync.gemspec
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: table_sync
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 6.
|
|
4
|
+
version: 6.11.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Umbrellio
|
|
8
|
+
autorequire:
|
|
8
9
|
bindir: bin
|
|
9
10
|
cert_chain: []
|
|
10
|
-
date:
|
|
11
|
+
date: 2026-04-20 00:00:00.000000000 Z
|
|
11
12
|
dependencies:
|
|
12
13
|
- !ruby/object:Gem::Dependency
|
|
13
14
|
name: memery
|
|
@@ -29,14 +30,14 @@ dependencies:
|
|
|
29
30
|
requirements:
|
|
30
31
|
- - ">="
|
|
31
32
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 1.
|
|
33
|
+
version: 1.8.0
|
|
33
34
|
type: :runtime
|
|
34
35
|
prerelease: false
|
|
35
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
37
|
requirements:
|
|
37
38
|
- - ">="
|
|
38
39
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 1.
|
|
40
|
+
version: 1.8.0
|
|
40
41
|
- !ruby/object:Gem::Dependency
|
|
41
42
|
name: rails
|
|
42
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -141,6 +142,7 @@ homepage: https://github.com/umbrellio/table_sync
|
|
|
141
142
|
licenses:
|
|
142
143
|
- MIT
|
|
143
144
|
metadata: {}
|
|
145
|
+
post_install_message:
|
|
144
146
|
rdoc_options: []
|
|
145
147
|
require_paths:
|
|
146
148
|
- lib
|
|
@@ -155,7 +157,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
155
157
|
- !ruby/object:Gem::Version
|
|
156
158
|
version: '0'
|
|
157
159
|
requirements: []
|
|
158
|
-
rubygems_version: 3.
|
|
160
|
+
rubygems_version: 3.3.27
|
|
161
|
+
signing_key:
|
|
159
162
|
specification_version: 4
|
|
160
163
|
summary: DB Table synchronization between microservices based on Model's event system
|
|
161
164
|
and RabbitMQ messaging
|