table_sync 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 839b04ca1021ff94b95f937236437c624efd6bcb63c129b23ec1d60b33ee841a
4
- data.tar.gz: 536a8c08cf0860716afc5c67b3fb7915db971b9fd4af8d94de0fd092fe7d093f
3
+ metadata.gz: 00c09777052902dc012d825d79668aeebe130d2fd4fcfefb77d3d33bbb1dc511
4
+ data.tar.gz: ec571dc138e800ada7e0f4fd112516caed6f110bbaabcc64cdfb3aac36b81989
5
5
  SHA512:
6
- metadata.gz: 11aa7c9d34b15a3798f9ab80704b873629be9ddadcf8fdd9ae61b74621dac19eecedede6fa5b360875253ce2f2cbf36b674d61fa1e76fd0cab107adf40a5323f
7
- data.tar.gz: 358848e41f3ff97c5ce59d9e4bb0e578a26cd346afddf2fc22c0ff1dcc29204c18905b632ead7f2155b0ed6105e346f5e6dcef4e91ec7e32d4daa45bc89e8fbe
6
+ metadata.gz: 18ed6af8a53a850c59ec1fbffa2ae9e85d197644528cbde81f8502fce2a88affbedfed071890430f0abbcfa718c11567c0171eef2f90886d6d01ff4db21c10fa
7
+ data.tar.gz: ea36659bef94f7cf27109c8882f5f6e5cacc90201032024ce8c41ce0bac3449dfb3172d0ba675b0f5b8d075e82bd9b0807571f49340e2d6e6a62330028c7695f
data/CHANGELOG.md CHANGED
@@ -1,6 +1,14 @@
1
1
  # Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [2.1.0] - 2020-04-09
5
+ ### Added
6
+ - **TableSync::BatchPublisher**: custom headers;
7
+ - **TableSync::BatchPublisher**: custom events;
8
+
9
+ ### Changed
10
+ - Slight changes to specs
11
+
4
12
  ## [2.0.0] - 2020-04-06
5
13
  ### Changed
6
14
  - Sequel publishing hooks: checking for `:destroy` events inside `:if`/`:unless` predicates
data/docs/synopsis.md CHANGED
@@ -103,11 +103,21 @@ And `TableSync.routing_metadata_callable` is not called at all: header value is
103
103
  - `routing_key`, which is a custom key used (if given) to override one from `TableSync.routing_key_callable`, `nil` by default
104
104
  - `push_original_attributes` (default value is `false`), if this option is set to `true`,
105
105
  original_attributes_array will be pushed to Rabbit instead of fetching records from database and sending their mapped attributes.
106
+ - `headers`, which is an option for custom headers (can be used for headers exchanges routes), `nil` by default
107
+ - `event`, which is an option for event specification (`:destroy` or `:update`), `:update` by default
106
108
 
107
109
  Example:
108
110
 
109
111
  ```ruby
110
- TableSync::BatchPublisher.new("SomeClass", [{ id: 1 }, { id: 2 }], confirm: false, routing_key: "custom_routing_key")
112
+ TableSync::BatchPublisher.new(
113
+ "SomeClass",
114
+ [{ id: 1 }, { id: 2 }],
115
+ confirm: false,
116
+ routing_key: "custom_routing_key",
117
+ push_original_attributes: true,
118
+ headers: { key: :value },
119
+ event: :destroy,
120
+ )
111
121
  ```
112
122
 
113
123
  # Manual publishing with batches (Russian)
@@ -125,11 +135,21 @@ TableSync::BatchPublisher.new("SomeClass", [{ id: 1 }, { id: 2 }], confirm: fals
125
135
  - `confirm`, флаг для RabbitMQ, по умолчанию - `true`
126
136
  - `routing_key`, ключ, который (если указан) замещает ключ, получаемый из `TableSync.routing_key_callable`, по умолчанию - `nil`
127
137
  - `push_original_attributes` (значение по умолчанию `false`), если для этой опции задано значение true, в Rabbit будут отправлены original_attributes_array, вместо получения значений записей из базы непосредственно перед отправкой.
138
+ - `headers`, опция для задания headers (можно использовать для задания маршрутов в headers exchange'ах), `nil` по умолчанию
139
+ - `event`, опция для указания типа события (`:destroy` или `:update`), `:update` по умолчанию
128
140
 
129
141
  Example:
130
142
 
131
143
  ```ruby
132
- TableSync::BatchPublisher.new("SomeClass", [{ id: 1 }, { id: 2 }], confirm: false, routing_key: "custom_routing_key")
144
+ TableSync::BatchPublisher.new(
145
+ "SomeClass",
146
+ [{ id: 1 }, { id: 2 }],
147
+ confirm: false,
148
+ routing_key: "custom_routing_key",
149
+ push_original_attributes: true,
150
+ headers: { key: :value },
151
+ event: :destroy,
152
+ )
133
153
  ```
134
154
 
135
155
  # Receiving changes
@@ -2,13 +2,16 @@
2
2
 
3
3
  class TableSync::BatchPublisher < TableSync::BasePublisher
4
4
  def initialize(object_class, original_attributes_array, **options)
5
- @object_class = object_class.constantize
6
5
  @original_attributes_array = original_attributes_array.map do |hash|
7
6
  filter_safe_for_serialization(hash.deep_symbolize_keys)
8
7
  end
9
- @confirm = options[:confirm] || true
10
- @routing_key = options[:routing_key] || resolve_routing_key
8
+
9
+ @object_class = object_class.constantize
10
+ @confirm = options[:confirm] || true
11
+ @routing_key = options[:routing_key] || resolve_routing_key
11
12
  @push_original_attributes = options[:push_original_attributes] || false
13
+ @headers = options[:headers]
14
+ @event = options[:event] || :update
12
15
  end
13
16
 
14
17
  def publish
@@ -27,7 +30,7 @@ class TableSync::BatchPublisher < TableSync::BasePublisher
27
30
 
28
31
  private
29
32
 
30
- attr_reader :original_attributes_array, :routing_key
33
+ attr_reader :original_attributes_array, :routing_key, :headers, :event
31
34
 
32
35
  def push_original_attributes?
33
36
  @push_original_attributes
@@ -64,7 +67,7 @@ class TableSync::BatchPublisher < TableSync::BasePublisher
64
67
  def params
65
68
  {
66
69
  **super,
67
- headers: nil,
70
+ headers: headers,
68
71
  }
69
72
  end
70
73
 
@@ -80,10 +83,6 @@ class TableSync::BatchPublisher < TableSync::BasePublisher
80
83
  }
81
84
  end
82
85
 
83
- def event
84
- :update
85
- end
86
-
87
86
  def attributes_for_sync
88
87
  return original_attributes_array if push_original_attributes?
89
88
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TableSync
4
- VERSION = "2.0.0"
4
+ VERSION = "2.1.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: table_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Umbrellio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-06 00:00:00.000000000 Z
11
+ date: 2020-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: memery