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: 3519bcb78e2b13c959698975e01d44ff031c16abc4d650096054264d14cdf580
4
- data.tar.gz: dbd636da4a27423d023889ee8ea6863ac192d10930aa9a107309708218efcc7e
3
+ metadata.gz: b62b15ee181806fd3c966b7d5ccc6e2a0797b3534496466b2879c74c02cf6130
4
+ data.tar.gz: 8929a0301e83183f528854e1b91cbdc1ec61741f60d0de8884a522b144d4f137
5
5
  SHA512:
6
- metadata.gz: b6dfb9945b340e4c944e3feeadc54edf3b2e150e1f9725c5764667cd9e80a573e613a72ba2654bfc87280d2cb749fc5cdc06ec93b4830d7e4c4b639b0c4631f1
7
- data.tar.gz: d77f0cef4644bf1dfa8b96dbad0f89031910857a0f79577aec47d37202a2c8a6dc6de81779fce873d524a387321286c5000d1c2be9fb0c2843c6bdc83591436c
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
- transaction_job.new(transaction_class_name: @transaction.name, args:)
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
- # also fail the step
42
- job.perform_later(**result.to_h) if result.success?
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
- # publish(:maybe_failed, step_name: method_name, args:, value: result)
45
- Rails.logger.debug "Skipping #{txn} because of errors: #{result.errors.to_h}" if defined?(Rails)
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
 
@@ -3,7 +3,7 @@
3
3
  module Dry
4
4
  module Transaction
5
5
  module Extra
6
- VERSION = "0.1.2"
6
+ VERSION = "0.1.3"
7
7
  end
8
8
  end
9
9
  end
@@ -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
- klass.register_extension :validation do
32
- klass.extend ValidationDSL
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
- klass.register_extension :class_callable do
36
- klass.extend ClassCallable
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 :perform_later do
40
- klass.extend PerformLater
46
+ klass.register_extension :validation do
47
+ klass.extend ValidationDSL
41
48
  end
42
49
 
43
- klass.register_extension :active_record_rescues do
44
- Dry::Transaction::Step.prepend(ActiveRecordRescues)
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.2
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: 2025-04-11 00:00:00.000000000 Z
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.2
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: []