keiro-dsl-0.10.0.0: test/conformance-skeletons/SkelQueue/Generated/MyService/Accepted_transfer_needs/ReadModel.hs
{-# LANGUAGE OverloadedRecordDot #-}
-- @generated by keiro-dsl 0.9.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.
module SkelQueue.Generated.MyService.Accepted_transfer_needs.ReadModel
( acceptedTransferNeedsReadModel
, acceptedTransferNeedsQualifiedTable
, registerAcceptedTransferNeeds
, startAcceptedTransferNeedsRebuild
, finishAcceptedTransferNeedsRebuild
, abandonAcceptedTransferNeedsRebuild
, acceptedTransferNeedsAsyncProjection
) where
import Data.Functor (void)
import Effectful (Eff, (:>))
import SkelQueue.Generated.MyService.Accepted_transfer_needs.ReadModelTable (acceptedTransferNeedsQualifiedTable)
import SkelQueue.MyService.Accepted_transfer_needs.ReadModelHoles (AcceptedTransferNeedsQueryInput, AcceptedTransferNeedsQueryResult, acceptedTransferNeedsQuery, applyAcceptedTransferNeeds)
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 (..))
acceptedTransferNeedsReadModel :: ReadModel AcceptedTransferNeedsQueryInput AcceptedTransferNeedsQueryResult
acceptedTransferNeedsReadModel =
ReadModel
{ name = "my-service-accepted-transfer-needs"
, tableName = "accepted_transfer_needs"
, schema = "my_service"
, subscriptionName = "my-service-accepted-transfer-needs-sub"
, version = 1
, shapeHash = "fnv1a:fec517dae7760b8a"
, defaultConsistency = Eventual
, strongScope = EntireLog
, query = acceptedTransferNeedsQuery
}
-- Call once at projection startup before serving queries.
registerAcceptedTransferNeeds :: (Store :> es) => Eff es ()
registerAcceptedTransferNeeds =
void (registerReadModel "my-service-accepted-transfer-needs" 1 "fnv1a:fec517dae7760b8a")
startAcceptedTransferNeedsRebuild :: (Store :> es) => GlobalPosition -> Eff es ReadModelMetadata
startAcceptedTransferNeedsRebuild =
Rebuild.startRebuild acceptedTransferNeedsReadModel ["my-service-accepted-transfer-needs-async"]
finishAcceptedTransferNeedsRebuild :: (Store :> es) => GlobalPosition -> Eff es (Either Rebuild.RebuildError ReadModelMetadata)
finishAcceptedTransferNeedsRebuild =
Rebuild.finishRebuild acceptedTransferNeedsReadModel ["my-service-accepted-transfer-needs-async"]
abandonAcceptedTransferNeedsRebuild :: (Store :> es) => Eff es ReadModelMetadata
abandonAcceptedTransferNeedsRebuild = Rebuild.abandonRebuild acceptedTransferNeedsReadModel
acceptedTransferNeedsAsyncProjection :: AsyncProjection
acceptedTransferNeedsAsyncProjection =
AsyncProjection
{ name = "my-service-accepted-transfer-needs-async"
, readModelName = "my-service-accepted-transfer-needs"
, subscriptionName = "my-service-accepted-transfer-needs-sub"
, applyRecorded = applyAcceptedTransferNeeds
, idempotencyKey = \recorded -> recorded.eventId
}