keiro-dsl-0.9.0.0: test/conformance-newsurface/Generated/TransferRouting/Hospital_load/ReadModel.hs
{-# LANGUAGE OverloadedRecordDot #-}
-- @generated by keiro-dsl 0.8.0.0 (language keiro-dsl 4) from readmodel hospital_load; do not edit.
module Generated.TransferRouting.Hospital_load.ReadModel
( hospitalLoadReadModel
, hospitalLoadQualifiedTable
, registerHospitalLoad
, startHospitalLoadRebuild
, finishHospitalLoadRebuild
, abandonHospitalLoadRebuild
, hospitalLoadAsyncProjection
) where
import Data.Functor (void)
import Effectful (Eff, (:>))
import Generated.TransferRouting.Hospital_load.ReadModelTable (hospitalLoadQualifiedTable)
import TransferRouting.Hospital_load.ReadModelHoles (HospitalLoadQueryInput, HospitalLoadQueryResult, hospitalLoadQuery, applyHospitalLoad)
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 (..))
hospitalLoadReadModel :: ReadModel HospitalLoadQueryInput HospitalLoadQueryResult
hospitalLoadReadModel =
ReadModel
{ name = "transfer-routing-hospital-load"
, tableName = "hospital_load"
, schema = "hospital_transfer"
, subscriptionName = "transfer-routing-hospital-load-sub"
, version = 1
, shapeHash = "fnv1a:977395d28f254ddb"
, defaultConsistency = Eventual
, strongScope = EntireLog
, query = hospitalLoadQuery
}
-- Call once at projection startup before serving queries.
registerHospitalLoad :: (Store :> es) => Eff es ()
registerHospitalLoad =
void (registerReadModel "transfer-routing-hospital-load" 1 "fnv1a:977395d28f254ddb")
startHospitalLoadRebuild :: (Store :> es) => GlobalPosition -> Eff es ReadModelMetadata
startHospitalLoadRebuild =
Rebuild.startRebuild hospitalLoadReadModel ["transfer-routing-hospital-load-async"]
finishHospitalLoadRebuild :: (Store :> es) => GlobalPosition -> Eff es (Either Rebuild.RebuildError ReadModelMetadata)
finishHospitalLoadRebuild =
Rebuild.finishRebuild hospitalLoadReadModel ["transfer-routing-hospital-load-async"]
abandonHospitalLoadRebuild :: (Store :> es) => Eff es ReadModelMetadata
abandonHospitalLoadRebuild = Rebuild.abandonRebuild hospitalLoadReadModel
hospitalLoadAsyncProjection :: AsyncProjection
hospitalLoadAsyncProjection =
AsyncProjection
{ name = "transfer-routing-hospital-load-async"
, readModelName = "transfer-routing-hospital-load"
, subscriptionName = "transfer-routing-hospital-load-sub"
, applyRecorded = applyHospitalLoad
, idempotencyKey = \recorded -> recorded.eventId
}