keiro-dsl-0.2.0.0: test/conformance-skeletons/SkelQueue/Generated/MyService/Accepted_transfer_needs/ReadModel.hs
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE OverloadedStrings #-}
-- @generated by keiro-dsl; do not edit. Regenerated from the .keiro spec.
module SkelQueue.Generated.MyService.Accepted_transfer_needs.ReadModel (
acceptedTransferNeedsReadModel,
acceptedTransferNeedsQualifiedTable,
registerAcceptedTransferNeeds,
startAcceptedTransferNeedsRebuild,
finishAcceptedTransferNeedsRebuild,
abandonAcceptedTransferNeedsRebuild,
acceptedTransferNeedsAsyncProjection,
) 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.Accepted_transfer_needs.ReadModelTable (acceptedTransferNeedsQualifiedTable)
import SkelQueue.MyService.Accepted_transfer_needs.ReadModelHoles (AcceptedTransferNeedsQueryInput, AcceptedTransferNeedsQueryResult, acceptedTransferNeedsQuery, applyAcceptedTransferNeeds)
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
}