keiro-dsl-0.15.0.0: test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModel.hs
-- @generated by keiro-dsl 0.15.0.0 (language keiro-dsl 4) from readmodel beta_view; do not edit.
module Proof.WorkspaceProof.BetaView.Generated.ReadModel
( betaViewReadModel
, betaViewQualifiedTable
, registerBetaView
, startBetaViewRebuild
, finishBetaViewRebuild
, abandonBetaViewRebuild
, betaViewAsyncProjection
) where
import Data.Functor (void)
import Effectful (Eff, (:>))
import Proof.WorkspaceProof.BetaView.Generated.ReadModelTable (betaViewQualifiedTable)
import Proof.WorkspaceProof.BetaView.ReadModelHoles (BetaViewQueryInput, BetaViewQueryResult, betaViewQuery, applyBetaView)
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 (..))
betaViewReadModel :: ReadModel BetaViewQueryInput BetaViewQueryResult
betaViewReadModel =
ReadModel
{ name = "workspace-proof-beta-view"
, tableName = "beta_view"
, schema = "workspace_proof"
, subscriptionName = "workspace-proof-beta-view-sub"
, version = 1
, shapeHash = "fnv1a:b20d797cf7a278b5"
, defaultConsistency = Eventual
, strongScope = EntireLog
, query = betaViewQuery
}
-- Call once at projection startup before serving queries.
registerBetaView :: (Store :> es) => Eff es ()
registerBetaView =
void (registerReadModel "workspace-proof-beta-view" 1 "fnv1a:b20d797cf7a278b5")
startBetaViewRebuild :: (Store :> es) => GlobalPosition -> Eff es ReadModelMetadata
startBetaViewRebuild =
Rebuild.startRebuild betaViewReadModel ["workspace-proof-beta-view-async"]
finishBetaViewRebuild :: (Store :> es) => GlobalPosition -> Eff es (Either Rebuild.RebuildError ReadModelMetadata)
finishBetaViewRebuild =
Rebuild.finishRebuild betaViewReadModel ["workspace-proof-beta-view-async"]
abandonBetaViewRebuild :: (Store :> es) => Eff es ReadModelMetadata
abandonBetaViewRebuild = Rebuild.abandonRebuild betaViewReadModel
betaViewAsyncProjection :: AsyncProjection
betaViewAsyncProjection =
AsyncProjection
{ name = "workspace-proof-beta-view-async"
, readModelName = "workspace-proof-beta-view"
, subscriptionName = "workspace-proof-beta-view-sub"
, applyRecorded = applyBetaView
, idempotencyKey = \recorded -> recorded.eventId
}