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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8be88d2fa97055fc1bc49b73c4b3af3a387f17fb6d8915d861efeefb005a0abd
4
- data.tar.gz: 39b7bf9da7908d054078739cc5ab1ab2005b9704517adb597279272e624ef4fb
3
+ metadata.gz: 1afac4f8c65d2ca81c26dce4fad2398f3fd40451c128afe0118e08a022f5fb9c
4
+ data.tar.gz: 3b2d11e14283a36660772d18dc086a81b46c7ee5c5817fe1cd29f940365ff1db
5
5
  SHA512:
6
- metadata.gz: 92064061a08489b21412bac9339d390af12e22be2b94576b9ad9d6af97ba3bffc19fc05a3b732e8d229a707f96eca807ca6b01f422d17abc5b9f053889cd22ea
7
- data.tar.gz: 312675a6b065ff407689c39aa04a73da156cd952c905546d575a2af2f713fa81f2d3d3f03ee9050f87aa68d89fb6d88f38a01ed777fa2a93fd496267f53bba81
6
+ metadata.gz: 357a5fac523645e2737b966d113af51c8e67ba6500c6483f436e3ada4540678d4eb0b42cf5af1c0c33dd7ae6ac1d1ebb100177acb355263f468193c3b34e6d9d
7
+ data.tar.gz: ea0ee25315561f7e47abcffbea6d0371d2316df679b59057227b041eb76a23bf5b434804c3840b9a4007a0bf3e57502e31814e0f0c533020ed36c1d752447bd9
@@ -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,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- umbrellio-utils (1.6.1)
4
+ umbrellio-utils (1.8.0)
5
5
  memery (~> 1)
6
6
 
7
7
  GEM
@@ -382,4 +382,4 @@ DEPENDENCIES
382
382
  yard
383
383
 
384
384
  BUNDLED WITH
385
- 2.5.18
385
+ 2.7.1
@@ -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.where(row(primary_key) => rows).reverse(row(primary_key)).each(&block)
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
- DB.transaction do
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module UmbrellioUtils
4
- VERSION = "1.6.1"
4
+ VERSION = "1.8.0"
5
5
  end
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.6.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-02-25 00:00:00.000000000 Z
10
+ date: 2025-08-20 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: memery