keiro-dsl-0.15.0.0: test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModel.hs
-- @generated by keiro-dsl 0.15.0.0 (language keiro-dsl 4) from readmodel alpha_view; do not edit.
module Proof.WorkspaceProof.AlphaView.Generated.ReadModel
( alphaViewReadModel
, alphaViewQualifiedTable
, registerAlphaView
, startAlphaViewRebuild
, finishAlphaViewRebuild
, abandonAlphaViewRebuild
, alphaViewAsyncProjection
) where
import Data.Functor (void)
import Effectful (Eff, (:>))
import Proof.WorkspaceProof.AlphaView.Generated.ReadModelTable (alphaViewQualifiedTable)
import Proof.WorkspaceProof.AlphaView.ReadModelHoles (AlphaViewQueryInput, AlphaViewQueryResult, alphaViewQuery, applyAlphaView)
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 (..))
alphaViewReadModel :: ReadModel AlphaViewQueryInput AlphaViewQueryResult
alphaViewReadModel =
ReadModel
{ name = "workspace-proof-alpha-view"
, tableName = "alpha_view"
, schema = "workspace_proof"
, subscriptionName = "workspace-proof-alpha-view-sub"
, version = 1
, shapeHash = "fnv1a:ebb780a44ff297c1"
, defaultConsistency = Eventual
, strongScope = EntireLog
, query = alphaViewQuery
}
-- Call once at projection startup before serving queries.
registerAlphaView :: (Store :> es) => Eff es ()
registerAlphaView =
void (registerReadModel "workspace-proof-alpha-view" 1 "fnv1a:ebb780a44ff297c1")
startAlphaViewRebuild :: (Store :> es) => GlobalPosition -> Eff es ReadModelMetadata
startAlphaViewRebuild =
Rebuild.startRebuild alphaViewReadModel ["workspace-proof-alpha-view-async"]
finishAlphaViewRebuild :: (Store :> es) => GlobalPosition -> Eff es (Either Rebuild.RebuildError ReadModelMetadata)
finishAlphaViewRebuild =
Rebuild.finishRebuild alphaViewReadModel ["workspace-proof-alpha-view-async"]
abandonAlphaViewRebuild :: (Store :> es) => Eff es ReadModelMetadata
abandonAlphaViewRebuild = Rebuild.abandonRebuild alphaViewReadModel
alphaViewAsyncProjection :: AsyncProjection
alphaViewAsyncProjection =
AsyncProjection
{ name = "workspace-proof-alpha-view-async"
, readModelName = "workspace-proof-alpha-view"
, subscriptionName = "workspace-proof-alpha-view-sub"
, applyRecorded = applyAlphaView
, idempotencyKey = \recorded -> recorded.eventId
}