keiro-dsl-0.2.0.0: test/conformance-skeletons/SkelQueue/Generated/MyService/Transfer_decisions/ReadModel.hs
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE OverloadedStrings #-}
-- @generated by keiro-dsl; do not edit. Regenerated from the .keiro spec.
module SkelQueue.Generated.MyService.Transfer_decisions.ReadModel (
transferDecisionsReadModel,
transferDecisionsQualifiedTable,
registerTransferDecisions,
startTransferDecisionsRebuild,
finishTransferDecisionsRebuild,
abandonTransferDecisionsRebuild,
transferDecisionsAsyncProjection,
) where
import Data.Functor (void)
import Effectful (Eff, (:>))
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 (..))
import SkelQueue.Generated.MyService.Transfer_decisions.ReadModelTable (transferDecisionsQualifiedTable)
import SkelQueue.MyService.Transfer_decisions.ReadModelHoles (TransferDecisionsQueryInput, TransferDecisionsQueryResult, applyTransferDecisions, transferDecisionsQuery)
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
}