keiro-dsl-0.10.0.0: test/conformance-skeletons/SkelQueue/Generated/MyService/Transfer_decisions/ReadModel.hs
{-# LANGUAGE OverloadedRecordDot #-}
-- @generated by keiro-dsl 0.9.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
module SkelQueue.Generated.MyService.Transfer_decisions.ReadModel
( transferDecisionsReadModel
, transferDecisionsQualifiedTable
, registerTransferDecisions
, startTransferDecisionsRebuild
, finishTransferDecisionsRebuild
, abandonTransferDecisionsRebuild
, transferDecisionsAsyncProjection
) where
import Data.Functor (void)
import Effectful (Eff, (:>))
import SkelQueue.Generated.MyService.Transfer_decisions.ReadModelTable (transferDecisionsQualifiedTable)
import SkelQueue.MyService.Transfer_decisions.ReadModelHoles (TransferDecisionsQueryInput, TransferDecisionsQueryResult, transferDecisionsQuery, applyTransferDecisions)
import Keiro.Projection (AsyncProjection (..))
import Keiro.ReadModel (ConsistencyMode (..), ReadModel (..), ReadModelMetadata, StrongScope (..), registerReadModel)
import Keiro.ReadModel.Rebuild qualified as Rebuild
import Kiroku.Store.Effect (Store)
import Kiroku.Store.Types (GlobalPosition, RecordedEvent (..))
transferDecisionsReadModel :: ReadModel TransferDecisionsQueryInput TransferDecisionsQueryResult
transferDecisionsReadModel =
ReadModel
{ name = "my-service-transfer-decisions"
, tableName = "transfer_decisions"
, schema = "my_service"
, subscriptionName = "my-service-transfer-decisions-sub"
, version = 1
, shapeHash = "fnv1a:d44d218822582783"
, defaultConsistency = Eventual
, strongScope = EntireLog
, query = transferDecisionsQuery
}
-- Call once at projection startup before serving queries.
registerTransferDecisions :: (Store :> es) => Eff es ()
registerTransferDecisions =
void (registerReadModel "my-service-transfer-decisions" 1 "fnv1a:d44d218822582783")
startTransferDecisionsRebuild :: (Store :> es) => GlobalPosition -> Eff es ReadModelMetadata
startTransferDecisionsRebuild =
Rebuild.startRebuild transferDecisionsReadModel ["my-service-transfer-decisions-async"]
finishTransferDecisionsRebuild :: (Store :> es) => GlobalPosition -> Eff es (Either Rebuild.RebuildError ReadModelMetadata)
finishTransferDecisionsRebuild =
Rebuild.finishRebuild transferDecisionsReadModel ["my-service-transfer-decisions-async"]
abandonTransferDecisionsRebuild :: (Store :> es) => Eff es ReadModelMetadata
abandonTransferDecisionsRebuild = Rebuild.abandonRebuild transferDecisionsReadModel
transferDecisionsAsyncProjection :: AsyncProjection
transferDecisionsAsyncProjection =
AsyncProjection
{ name = "my-service-transfer-decisions-async"
, readModelName = "my-service-transfer-decisions"
, subscriptionName = "my-service-transfer-decisions-sub"
, applyRecorded = applyTransferDecisions
, idempotencyKey = \recorded -> recorded.eventId
}