riverqueue-sequel 0.15.0 → 0.16.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/lib/driver.rb +59 -55
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9722dd3b91092e1f94fa96e670da71802536f4d8c8dc4046d634ad0b7409ca4c
|
|
4
|
+
data.tar.gz: 0afa80638811c56462b40c1660b5dad2a8affdcbe60b872eddd6b40148fe5d85
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c83a4915de0f037bfa54a0224583b5f2f7e0381ad016382def5fe933c82a6426519267e7175b8c88a361b87a96ec1d53d82574a0c41bf4685192f5fd6166afd2
|
|
7
|
+
data.tar.gz: 6a72d66800b17083e7e20d4a0f06b69654a9b3e69166b80d2b1fde8c649505f6c8277dc284e8b5f1bd8921006ad7274806dddddd79b7b613901b1c6aff281b94
|
data/lib/driver.rb
CHANGED
|
@@ -58,12 +58,14 @@ module River::Driver
|
|
|
58
58
|
def job_insert_many(insert_params_array)
|
|
59
59
|
return [] if insert_params_array.empty?
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
61
|
+
runtime_insert_transaction(insert_params_array) do
|
|
62
|
+
if @is_sqlite
|
|
63
|
+
sqlite_job_insert_many(insert_params_array)
|
|
64
|
+
else
|
|
65
|
+
results = postgres_job_insert_many(insert_params_array)
|
|
66
|
+
postgres_notify_insert(insert_params_array)
|
|
67
|
+
results
|
|
68
|
+
end
|
|
67
69
|
end
|
|
68
70
|
end
|
|
69
71
|
|
|
@@ -209,6 +211,10 @@ module River::Driver
|
|
|
209
211
|
@db.run(sql)
|
|
210
212
|
end
|
|
211
213
|
|
|
214
|
+
private def runtime_job_columns
|
|
215
|
+
@is_sqlite ? SQLITE_JOB_COLUMNS : "*"
|
|
216
|
+
end
|
|
217
|
+
|
|
212
218
|
private def runtime_job_list_without_params
|
|
213
219
|
job_list(:all)
|
|
214
220
|
end
|
|
@@ -270,55 +276,53 @@ module River::Driver
|
|
|
270
276
|
# matching migration 007 and newer River databases.
|
|
271
277
|
private def sqlite_job_insert_many(insert_params_array)
|
|
272
278
|
nonces = sqlite_insert_nonces(insert_params_array)
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
[sqlite_to_job_row_from_raw(row), !inserted_nonces.key?(metadata[UNIQUE_INSERT_METADATA_KEY])]
|
|
321
|
-
end
|
|
279
|
+
jobs = insert_params_array.zip(nonces).map { |param, nonce| sqlite_insert_params_to_hash(param, nonce) }
|
|
280
|
+
inserted_nonces = nonces.to_h { |nonce| [nonce, true] }
|
|
281
|
+
|
|
282
|
+
sql = <<~SQL
|
|
283
|
+
INSERT INTO river_job (
|
|
284
|
+
args,
|
|
285
|
+
created_at,
|
|
286
|
+
kind,
|
|
287
|
+
max_attempts,
|
|
288
|
+
metadata,
|
|
289
|
+
priority,
|
|
290
|
+
queue,
|
|
291
|
+
scheduled_at,
|
|
292
|
+
state,
|
|
293
|
+
tags,
|
|
294
|
+
unique_key,
|
|
295
|
+
unique_states
|
|
296
|
+
)
|
|
297
|
+
SELECT
|
|
298
|
+
jsonb(json_extract(value, '$.args')),
|
|
299
|
+
datetime('now', 'subsec'),
|
|
300
|
+
cast(json_extract(value, '$.kind') AS text),
|
|
301
|
+
cast(json_extract(value, '$.max_attempts') AS integer),
|
|
302
|
+
jsonb(json_extract(value, '$.metadata')),
|
|
303
|
+
cast(json_extract(value, '$.priority') AS integer),
|
|
304
|
+
cast(json_extract(value, '$.queue') AS text),
|
|
305
|
+
coalesce(cast(json_extract(value, '$.scheduled_at') AS text), datetime('now', 'subsec')),
|
|
306
|
+
cast(json_extract(value, '$.state') AS text),
|
|
307
|
+
jsonb(json_extract(value, '$.tags')),
|
|
308
|
+
CASE
|
|
309
|
+
WHEN length(cast(json_extract(value, '$.unique_key') AS text)) = 0 THEN NULL
|
|
310
|
+
ELSE unhex(cast(json_extract(value, '$.unique_key') AS text))
|
|
311
|
+
END,
|
|
312
|
+
nullif(cast(json_extract(value, '$.unique_states') AS integer), 0)
|
|
313
|
+
FROM json_each(cast(? AS blob))
|
|
314
|
+
WHERE true
|
|
315
|
+
ON CONFLICT (unique_key) WHERE #{SQLITE_CONFLICT_WHERE}
|
|
316
|
+
DO UPDATE SET kind = river_job.kind
|
|
317
|
+
RETURNING #{SQLITE_JOB_COLUMNS}
|
|
318
|
+
SQL
|
|
319
|
+
|
|
320
|
+
rows = @db.fetch(sql, JSON.generate(jobs)).all
|
|
321
|
+
sqlite_notify_insert(insert_params_array)
|
|
322
|
+
|
|
323
|
+
rows.map do |row|
|
|
324
|
+
job = sqlite_to_job_row_from_raw(row)
|
|
325
|
+
[job, !inserted_nonces.key?(job.metadata[UNIQUE_INSERT_METADATA_KEY])]
|
|
322
326
|
end
|
|
323
327
|
end
|
|
324
328
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: riverqueue-sequel
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.16.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Blake Gentry
|
|
@@ -36,14 +36,14 @@ dependencies:
|
|
|
36
36
|
requirements:
|
|
37
37
|
- - '='
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 0.
|
|
39
|
+
version: 0.16.0
|
|
40
40
|
type: :runtime
|
|
41
41
|
prerelease: false
|
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
44
|
- - '='
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 0.
|
|
46
|
+
version: 0.16.0
|
|
47
47
|
description: Sequel Postgres and SQLite driver for inserting and working River jobs
|
|
48
48
|
in Ruby.
|
|
49
49
|
email: brandur@brandur.org
|