umbrellio-utils 1.6.1 → 1.8.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/.github/workflows/test.yml +4 -4
- data/Gemfile.lock +2 -2
- data/lib/umbrellio_utils/database.rb +21 -3
- data/lib/umbrellio_utils/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: 1afac4f8c65d2ca81c26dce4fad2398f3fd40451c128afe0118e08a022f5fb9c
|
4
|
+
data.tar.gz: 3b2d11e14283a36660772d18dc086a81b46c7ee5c5817fe1cd29f940365ff1db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 357a5fac523645e2737b966d113af51c8e67ba6500c6483f436e3ada4540678d4eb0b42cf5af1c0c33dd7ae6ac1d1ebb100177acb355263f468193c3b34e6d9d
|
7
|
+
data.tar.gz: ea0ee25315561f7e47abcffbea6d0371d2316df679b59057227b041eb76a23bf5b434804c3840b9a4007a0bf3e57502e31814e0f0c533020ed36c1d752447bd9
|
data/.github/workflows/test.yml
CHANGED
@@ -54,7 +54,7 @@ jobs:
|
|
54
54
|
- name: Run specs
|
55
55
|
run: bundle exec ci-helper RunSpecs
|
56
56
|
|
57
|
-
- name: Coveralls
|
58
|
-
uses: coverallsapp/github-action@master
|
59
|
-
with:
|
60
|
-
github-token: ${{ secrets.GITHUB_TOKEN }}
|
57
|
+
# - name: Coveralls
|
58
|
+
# uses: coverallsapp/github-action@master
|
59
|
+
# with:
|
60
|
+
# github-token: ${{ secrets.GITHUB_TOKEN }}
|
data/Gemfile.lock
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# rubocop:disable Metrics/ModuleLength
|
3
4
|
module UmbrellioUtils
|
4
5
|
module Database
|
5
6
|
extend self
|
@@ -24,10 +25,15 @@ module UmbrellioUtils
|
|
24
25
|
|
25
26
|
def each_record(dataset, primary_key: nil, **options, &block)
|
26
27
|
primary_key = primary_key_from(dataset, primary_key:)
|
28
|
+
eager_tables = Array(options.delete(:eager_load))
|
27
29
|
|
28
30
|
with_temp_table(dataset, primary_key:, **options) do |ids|
|
29
31
|
rows = ids.map { |id| row(id.is_a?(Hash) ? id.values : [id]) }
|
30
|
-
dataset.model
|
32
|
+
records = dataset.model
|
33
|
+
.eager(eager_tables)
|
34
|
+
.where(row(primary_key) => rows)
|
35
|
+
.reverse(row(primary_key)).all
|
36
|
+
records.each(&block)
|
31
37
|
end
|
32
38
|
end
|
33
39
|
|
@@ -40,12 +46,14 @@ module UmbrellioUtils
|
|
40
46
|
# @option [Array] primary_key custom primary key to use for dataset
|
41
47
|
# @option [Symbol, String] temp_table_name custom name for temporary table,
|
42
48
|
# table is reused if already exists
|
49
|
+
# rubocop:disable Metrics/ParameterLists
|
43
50
|
def with_temp_table(
|
44
51
|
dataset,
|
45
52
|
page_size: 1_000,
|
46
53
|
sleep: nil,
|
47
54
|
primary_key: nil,
|
48
|
-
temp_table_name: nil
|
55
|
+
temp_table_name: nil,
|
56
|
+
transaction: true
|
49
57
|
)
|
50
58
|
primary_key = primary_key_from(dataset, primary_key:)
|
51
59
|
sleep_interval = sleep_interval_from(sleep)
|
@@ -57,7 +65,7 @@ module UmbrellioUtils
|
|
57
65
|
pk_set = []
|
58
66
|
|
59
67
|
loop do
|
60
|
-
|
68
|
+
conditional_transaction(transaction) do
|
61
69
|
pk_set = pop_next_pk_batch(temp_table_name, primary_key, page_size)
|
62
70
|
yield(pk_set) if pk_set.any?
|
63
71
|
end
|
@@ -69,6 +77,7 @@ module UmbrellioUtils
|
|
69
77
|
|
70
78
|
DB.drop_table(temp_table_name)
|
71
79
|
end
|
80
|
+
# rubocop:enable Metrics/ParameterLists
|
72
81
|
|
73
82
|
def create_temp_table(dataset, primary_key: nil, temp_table_name: nil)
|
74
83
|
time = Time.current
|
@@ -96,6 +105,14 @@ module UmbrellioUtils
|
|
96
105
|
|
97
106
|
private
|
98
107
|
|
108
|
+
def conditional_transaction(transaction, &)
|
109
|
+
if transaction
|
110
|
+
DB.transaction(&)
|
111
|
+
else
|
112
|
+
yield
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
99
116
|
def row(values)
|
100
117
|
return values if values.size == 1
|
101
118
|
Sequel.function(:row, *values)
|
@@ -137,3 +154,4 @@ module UmbrellioUtils
|
|
137
154
|
end
|
138
155
|
end
|
139
156
|
end
|
157
|
+
# rubocop:enable Metrics/ModuleLength
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: umbrellio-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Team Umbrellio
|
8
8
|
bindir: exe
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-08-20 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: memery
|