keiro-dsl-0.18.0.0: test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Process.hs
{-# OPTIONS_GHC -Wno-missing-signatures #-}
-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from process reaction ReplayReaction; do not edit.
module Generated.CheckedMappingReplay.ReplayReaction.Process
( ReplayReactionInput (..)
, replayReactionProcessName
, replayReactionCategory
, replayReactionProcessWorkerOptions
, replayReactionReactionVersion
, replayReactionReactionFingerprint
, replayReactionReact
, replayReactionProcessManager
, replayReactionRunProcessWorker
) where
import Data.Text (Text)
import Numeric.Natural (Natural)
import Generated.CheckedMappingReplay.ReplayReaction.Input (ReplayReactionInput (..))
import CheckedMappingReplay.ReplayReaction.ProcessHoles (decodeReplayReactionInput)
import Generated.CheckedMappingReplay.ReplayLedger.Domain qualified as Saga
import Generated.CheckedMappingReplay.ReplayLedger.EventStream (replayLedgerEventStream, ReplayLedgerEventStreamDef)
import Generated.CheckedMappingReplay.ReplayTarget.Domain qualified as Target
import Generated.CheckedMappingReplay.ReplayTarget.EventStream (replayTargetCommandCategory, replayTargetEventStream)
import Generated.CheckedMappingReplay.Nominals qualified as N
import Keiro.Command (DomainCommandHandler (..), SilentDomainDecision (..))
import Keiro.ProcessManager (PMCommand (..))
import Keiro.ProcessManager.Reaction qualified as Reaction
import Keiro.Stream qualified as Stream
import Keiro.ProcessManager (PoisonPolicy (..), RejectedCommandPolicy (..), WorkerOptions (..))
import Shibuya.Core.Ack (RetryDelay (..))
replayReactionProcessName :: Text
replayReactionProcessName = "checked-mapping-replay-reaction"
replayReactionCategory :: Stream.StreamCategory ReplayLedgerEventStreamDef
replayReactionCategory = Stream.categoryUnsafe "checkedMappingReplaySaga"
replayReactionProcessWorkerOptions :: WorkerOptions es msg
replayReactionProcessWorkerOptions =
WorkerOptions
{ poisonPolicy = PoisonHalt,
rejectedCommandPolicy = RejectedHalt,
transientRetryDelay = RetryDelay 5, -- matches defaultWorkerOptions; runtime tuning
metrics = Nothing -- runtime configuration; install at call site
}
replayReactionReactionVersion :: Natural
replayReactionReactionVersion = 1
replayReactionReactionFingerprint :: Text
replayReactionReactionFingerprint = "cc73d755be55b8a2d237ac02752ad8d425a50c5fb9f7c3bab8b5f5ada239b1c8"
replayReactionCorrelate :: ReplayReactionInput -> Text
replayReactionCorrelate input = case input of
ReplayRequested { retainedId } -> (N.retainedIdText retainedId)
replayReactionReact :: ReplayReactionInput -> Reaction.ReactionPlan Saga.ReplayLedgerCommand Target.ReplayTargetCommand
replayReactionReact input = case input of
ReplayRequested { retainedId, envelope }
-> Reaction.AdvanceReaction { command = Saga.Record (Saga.RecordData { Saga.retainedId = retainedId, Saga.envelope = envelope }), followUps = [Reaction.FollowDispatch (PMCommand (Stream.entityStream replayTargetCommandCategory (N.retainedIdText retainedId)) (Target.Store (Target.StoreData { Target.retainedId = retainedId, Target.envelope = envelope })))], onAccepted = [] }
replayReactionProcessManager =
Reaction.ReactiveProcessManager
{ name = replayReactionProcessName
, correlate = replayReactionCorrelate
, sagaHandler = DomainCommandHandler { eventStream = replayLedgerEventStream, classifySilent = \_ -> SilentNoOp () }
, streamFor = Stream.entityStream replayReactionCategory
, targetEventStream = replayTargetEventStream
, targetProjections = const []
, react = replayReactionReact
}
replayReactionRunProcessWorker options adapter =
Reaction.runReactiveProcessManagerWorkerWith
replayReactionProcessWorkerOptions
options
replayReactionProcessManager
adapter
(\event -> case decodeReplayReactionInput event of Nothing -> Nothing; Just input -> Just (event, input))