dionysus-rb 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/Gemfile.lock +1 -1
- data/lib/dionysus/producer/genesis/stream_job.rb +3 -2
- data/lib/dionysus/producer/genesis/streamer.rb +19 -2
- data/lib/dionysus/producer/genesis.rb +1 -1
- data/lib/dionysus/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0934079a452c75d517f1954e9cc6650c4b6219273c329013b676f336ea0d9e13'
|
4
|
+
data.tar.gz: bee752d4720e8f4249867ecf3506b725fa9ba9cd678ebadf9ac0ac893c635925
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e12c164f5909f35e9b0d4336fb31ebb3d79e064409243beaad6e40c32f5590ff296ee805601de312b111fcc5fbb10d86008064cb2c229de56d7eab8518e6c9f9
|
7
|
+
data.tar.gz: 6a0fffb5d3b4d65eab34a0aaa16871002b8713addb45e07a1094706559fc978d5b37c885d6d2179c481bea436eddfe9805db0385a464ddb6a70b056ccf10e489
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.4.0]
|
4
|
+
- Allow `Dionysus::Producer::Genesis::StreamJob`/`Dionysus::Producer::Genesis::Streamer` to take more options and perform filtering by extra conditions. This is useful if you only need to stream some of the records.
|
5
|
+
|
3
6
|
## [0.3.0]
|
4
7
|
- Allow to provide multiple message filters. `message_filter` stays for backwards compatibility and depends on `message_filters`.
|
5
8
|
|
data/Gemfile.lock
CHANGED
@@ -5,9 +5,10 @@ class Dionysus::Producer::Genesis::StreamJob
|
|
5
5
|
|
6
6
|
sidekiq_options queue: Dionysus::Producer::Config.default_sidekiq_queue
|
7
7
|
|
8
|
-
def perform(topic, model_klass, from, to, number_of_days, streamer_job)
|
8
|
+
def perform(topic, model_klass, from, to, number_of_days, streamer_job, options = {})
|
9
|
+
final_options = options.symbolize_keys.reverse_merge(number_of_days: number_of_days)
|
9
10
|
Dionysus::Producer::Genesis::Streamer
|
10
11
|
.new(job_class: streamer_job.constantize)
|
11
|
-
.stream(topic, model_klass.constantize, from, to,
|
12
|
+
.stream(topic, model_klass.constantize, from, to, final_options)
|
12
13
|
end
|
13
14
|
end
|
@@ -26,14 +26,31 @@ class Dionysus::Producer::Genesis::Streamer
|
|
26
26
|
delegate :soft_delete_column, to: :config
|
27
27
|
|
28
28
|
def fetch_resources(resource_class, from, to, options_hash)
|
29
|
-
|
30
|
-
|
29
|
+
resource_class
|
30
|
+
.then { |records| apply_time_range(records, from, to) }
|
31
|
+
.then { |records| apply_visibility(records, options_hash) }
|
32
|
+
.then { |records| apply_query_conditions(records, options_hash) }
|
33
|
+
end
|
34
|
+
|
35
|
+
def apply_time_range(records, from, to)
|
36
|
+
records = records.where("updated_at BETWEEN ? AND ?", from, to) if from.present? && to.present?
|
37
|
+
records
|
38
|
+
end
|
39
|
+
|
40
|
+
def apply_visibility(records, options_hash)
|
31
41
|
if visible_only?(options_hash) && records.column_names.include?(soft_delete_column.to_s)
|
32
42
|
records = records.where(soft_delete_column => nil)
|
33
43
|
end
|
34
44
|
records
|
35
45
|
end
|
36
46
|
|
47
|
+
def apply_query_conditions(records, options_hash)
|
48
|
+
if (query_conditions = options_hash.fetch(:query_conditions, {})).any?
|
49
|
+
query_conditions.each { |attr, val| records = records.where(attr => val) }
|
50
|
+
end
|
51
|
+
records
|
52
|
+
end
|
53
|
+
|
37
54
|
def visible_only?(options_hash)
|
38
55
|
options_hash.fetch(:visible_only, false)
|
39
56
|
end
|
@@ -32,7 +32,7 @@ class Dionysus::Producer::Genesis
|
|
32
32
|
def enqueue_stream_model_for_topic(topic, model, from, to, number_of_days, streamer_job)
|
33
33
|
Dionysus::Producer::Genesis::StreamJob
|
34
34
|
.set(queue: sidekiq_queue)
|
35
|
-
.perform_async(topic.to_s, model.to_s, from.as_json, to.as_json, number_of_days.to_i, streamer_job.to_s)
|
35
|
+
.perform_async(topic.to_s, model.to_s, from.as_json, to.as_json, number_of_days.to_i, streamer_job.to_s, {})
|
36
36
|
end
|
37
37
|
|
38
38
|
def publish_genesis_performed(model:, topic:, number_of_days:)
|
data/lib/dionysus/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dionysus-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karol Galanciak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|