dry-transaction-extra 0.1.2 → 0.1.3
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b62b15ee181806fd3c966b7d5ccc6e2a0797b3534496466b2879c74c02cf6130
|
4
|
+
data.tar.gz: 8929a0301e83183f528854e1b91cbdc1ec61741f60d0de8884a522b144d4f137
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51c30617eae541f201b1ce95bf3c1a522cd616e80c56a3a0f4cb1ec900907999d214cf332d1966106fa92b50d38863ec359274fe71e1de595ba463485e35b7cf
|
7
|
+
data.tar.gz: 43a535b92a9c134bf6d861776d72124453ba5184481cfece9eedc777315c7944b97eadd5565867a55d07ae2b742fbb76e26bdbe736fefffb372b2d3f502340a3
|
@@ -28,6 +28,8 @@ module Dry
|
|
28
28
|
end
|
29
29
|
|
30
30
|
class ConfiguredJob
|
31
|
+
attr_reader :job_class, :transaction, :options
|
32
|
+
|
31
33
|
def initialize(job_class, transaction, options = {})
|
32
34
|
@job_class = job_class
|
33
35
|
@transaction = transaction
|
@@ -35,6 +37,8 @@ module Dry
|
|
35
37
|
end
|
36
38
|
|
37
39
|
def perform_later(*args)
|
40
|
+
args.last.reverse_merge!(@options[:perform_with]) if @options[:perform_with]
|
41
|
+
|
38
42
|
if validator
|
39
43
|
result = validator.new.call(*args).to_monad
|
40
44
|
return result unless result.success?
|
@@ -43,7 +47,7 @@ module Dry
|
|
43
47
|
end
|
44
48
|
|
45
49
|
Dry::Monads::Success(
|
46
|
-
|
50
|
+
job_class.new(transaction_class_name: @transaction.name, args:)
|
47
51
|
.enqueue(@options)
|
48
52
|
)
|
49
53
|
end
|
@@ -37,9 +37,17 @@ module Dry
|
|
37
37
|
|
38
38
|
if (validator = job&.validator)
|
39
39
|
result = validator.new.call(input)
|
40
|
-
# If the validator failed, don't enqueue the job, but don't
|
41
|
-
|
42
|
-
|
40
|
+
# If the validator failed, don't enqueue the job, but don't fail the step
|
41
|
+
if result.success?
|
42
|
+
job.perform_later(**result.to_h)
|
43
|
+
else
|
44
|
+
steps
|
45
|
+
.detect { |step| step.name == method_name }
|
46
|
+
.publish(:async_step_validation_failed,
|
47
|
+
step_name: method_name,
|
48
|
+
args: input,
|
49
|
+
value: result)
|
50
|
+
end
|
43
51
|
else
|
44
52
|
job.perform_later(**input)
|
45
53
|
end
|
@@ -41,8 +41,12 @@ module Dry
|
|
41
41
|
|
42
42
|
result = txn_class.validator.new.call(*args)
|
43
43
|
if result.failure?
|
44
|
-
|
45
|
-
|
44
|
+
steps
|
45
|
+
.detect { |step| step.name == method_name }
|
46
|
+
.publish(:maybe_step_validation_failed,
|
47
|
+
step_name: method_name,
|
48
|
+
args:,
|
49
|
+
value: result)
|
46
50
|
return Success(*args)
|
47
51
|
end
|
48
52
|
|
@@ -12,11 +12,13 @@ require_relative "extra/steps/tap"
|
|
12
12
|
require_relative "extra/steps/use"
|
13
13
|
require_relative "extra/steps/valid"
|
14
14
|
|
15
|
-
require_relative "extra/active_record_rescues"
|
16
15
|
require_relative "extra/class_callable"
|
17
16
|
require_relative "extra/perform_later"
|
18
17
|
require_relative "extra/validation_dsl"
|
19
18
|
|
19
|
+
Dry::Transaction::Step.register_event :maybe_step_validation_failed
|
20
|
+
Dry::Transaction::Step.register_event :async_step_validation_failed
|
21
|
+
|
20
22
|
module Dry
|
21
23
|
module Transaction
|
22
24
|
module Extra
|
@@ -28,20 +30,25 @@ module Dry
|
|
28
30
|
|
29
31
|
klass.extend Dry::Core::Extensions
|
30
32
|
|
31
|
-
|
32
|
-
klass.
|
33
|
+
if defined?(ActiveRecord)
|
34
|
+
klass.register_extension :active_record_rescues do
|
35
|
+
require_relative "extra/active_record_rescues"
|
36
|
+
Dry::Transaction::Step.prepend(ActiveRecordRescues)
|
37
|
+
end
|
33
38
|
end
|
34
39
|
|
35
|
-
|
36
|
-
klass.
|
40
|
+
if defined?(ActiveJob)
|
41
|
+
klass.register_extension :perform_later do
|
42
|
+
klass.extend PerformLater
|
43
|
+
end
|
37
44
|
end
|
38
45
|
|
39
|
-
klass.register_extension :
|
40
|
-
klass.extend
|
46
|
+
klass.register_extension :validation do
|
47
|
+
klass.extend ValidationDSL
|
41
48
|
end
|
42
49
|
|
43
|
-
klass.register_extension :
|
44
|
-
|
50
|
+
klass.register_extension :class_callable do
|
51
|
+
klass.extend ClassCallable
|
45
52
|
end
|
46
53
|
end
|
47
54
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-transaction-extra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Sadauskas
|
8
8
|
bindir: exe
|
9
9
|
cert_chain: []
|
10
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: dry-monads
|
@@ -129,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: '0'
|
131
131
|
requirements: []
|
132
|
-
rubygems_version: 3.6.
|
132
|
+
rubygems_version: 3.6.9
|
133
133
|
specification_version: 4
|
134
134
|
summary: Extra steps and functionality for Dry::Transaction
|
135
135
|
test_files: []
|