Class: OmniService::Transaction
- Inherits:
-
Object
- Object
- OmniService::Transaction
- Extended by:
- Dry::Initializer
- Includes:
- Strict
- Defined in:
- lib/omni_service/transaction.rb
Overview
Wraps component execution in a database transaction with callback support. Rolls back on failure; executes on_success callbacks after commit, on_failure after rollback.
Callbacks run asynchronously by default (configurable via OmniService.with_sync_callbacks). on_success callbacks receive the same params and context as the main component. on_failure callbacks receive the failed Result as their first param.
Defined Under Namespace
Classes: Halt
Instance Method Summary collapse
Methods included from Strict
Instance Method Details
#call(*params, **context) ⇒ Object
48 49 50 51 52 53 54 55 |
# File 'lib/omni_service/transaction.rb', line 48 def call(*params, **context) result = call_transaction(*params, **context).merge(operation: self) return result if result.success? on_failure_results = on_failure_callbacks.map { |callback| callback.call(result) } result.merge(on_failure: result.on_failure + on_failure_results) end |
#signature ⇒ Object
57 58 59 |
# File 'lib/omni_service/transaction.rb', line 57 def signature @signature ||= [component_wrapper.signature.first, true] end |