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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c9053c457facb21583722141c254d7795ce512a50be9b433c1fc6e4678b153c2
4
- data.tar.gz: a3e030b3ef171c83ae81192712ce9db71789986f4f7d4c2121d335d516a34a1c
3
+ metadata.gz: 4f639c5f219e99ba00d508a19d652a617df44dc630c86e29233f6269a9d09650
4
+ data.tar.gz: 7645c878d05b076b871eb8f5ddb5c49092d7b8210c4c6b9f38f489fe3fcffadb
5
5
  SHA512:
6
- metadata.gz: ae4407fb443aec3794f52f8b4b81681ea6bae82fe3838b4e59403fde12a4bdc445bb831cffd53afb5759fe99f311fe1dfdbf6b73b2b2fd995bc4fff88cc4befb
7
- data.tar.gz: 0714f4fecc46b8134cb1f06112d1e72912a28c563118ca901a72f7adb10d42d3a3d4bc65a55d2879e6788255b7c809fc84cd0bc54d7eac39cfa45df61ce28772
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
- ### Fixed
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.10.0)
4
+ table_sync (6.11.0)
5
5
  memery
6
- rabbit_messaging (>= 1.7.0)
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.3.4)
84
+ amq-protocol (2.7.0)
85
85
  ast (2.4.3)
86
- base64 (0.2.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.5)
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.2.0)
116
- bunny (~> 2.19)
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.7.0)
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.2.1)
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.3)
312
+ sorted_set (1.1.0)
311
313
  rbtree
312
- set (~> 1.0)
313
314
  stringio (3.1.8)
314
- thor (1.4.0)
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(table:, schema:, event:, direction:, count: 1)
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 = calculated_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
@@ -16,6 +16,7 @@ module TableSync::Setup
16
16
  original_attributes: attributes,
17
17
  event:,
18
18
  debounce_time: options[:debounce_time],
19
+ compress: options.fetch(:compress, false),
19
20
  ).publish_later
20
21
  end
21
22
  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
@@ -15,6 +15,7 @@ module TableSync::Setup
15
15
  original_attributes: values,
16
16
  event:,
17
17
  debounce_time: options[:debounce_time],
18
+ compress: options.fetch(:compress, false),
18
19
  ).publish_later
19
20
  end
20
21
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TableSync
4
- VERSION = "6.10.0"
4
+ VERSION = "6.11.0"
5
5
  end
data/lib/table_sync.rb CHANGED
@@ -52,6 +52,7 @@ module TableSync
52
52
  if_condition: options[:if],
53
53
  unless_condition: options[:unless],
54
54
  debounce_time: options[:debounce_time],
55
+ compress: options.fetch(:compress, false),
55
56
  ).register_callbacks
56
57
  end
57
58
 
data/table_sync.gemspec CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  end
28
28
 
29
29
  spec.add_dependency "memery"
30
- spec.add_dependency "rabbit_messaging", ">= 1.7.0"
30
+ spec.add_dependency "rabbit_messaging", ">= 1.8.0"
31
31
  spec.add_dependency "rails"
32
32
  spec.add_dependency "self_data"
33
33
  end
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.10.0
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: 1980-01-02 00:00:00.000000000 Z
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.7.0
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.7.0
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.6.9
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