keiro-dsl-0.18.0.0: test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ProjectionCatalog.hs
-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from projection-catalog checked-mapping-replay; do not edit.
{-# LANGUAGE OverloadedStrings #-}
module Generated.CheckedMappingReplay.ProjectionCatalog
( projectionCatalog
, validatedProjectionCatalog
, projectionCatalogInventory
, projectionCatalogRegistrations
, projectionCatalogAsyncRegistrations
, projectionCatalogQuerySupplies
, registerProjectionCatalog
, replayWriterProjectionSet
, replayRebuildRebuildGroupId
, startReplayRebuildRebuild
) where
import Data.List.NonEmpty (NonEmpty (..))
import Effectful (Eff, IOE, (:>))
import Keiro.Projection (AsyncProjection (..))
import Keiro.Projection.Catalog qualified as Catalog
import Keiro.ReadModel.Rebuild qualified as Rebuild
import Kiroku.Store.Effect (Store)
import Kiroku.Store.Subscription.Types qualified as KirokuSubscription
import CheckedMappingReplay.ProjectionCatalog.ProjectionCatalogHoles qualified as Holes
import Generated.CheckedMappingReplay.ReplayLookup.ReadModel qualified as RMReplayLookup
must :: Show error => Either error value -> value
must = either (error . show) id
replayWriterProjectionSet :: Catalog.ProjectionSet Holes.ReplayWriterEvent
replayWriterProjectionSet =
Catalog.ProjectionSet
(must (Catalog.mkSourceId "all"))
(Catalog.ProjectionDefinition
(must (Catalog.mkProjectionId "replay_writer"))
(must (Catalog.mkRebuildGroupId "replay_rebuild"))
((must (Catalog.mkTargetId "replay_table")) :| [])
(Catalog.Replayable (Catalog.ReplayAdapter Holes.decodeReplayWriterReplay Holes.applyReplayWriterReplay))
(Catalog.AsyncHandler (AsyncProjection "checked-mapping-replay-writer-v1" "checked-mapping-replay-replay-lookup" "checked-mapping-replay-writer" Holes.applyReplayWriterLive Holes.replayWriterIdempotencyKey) (must (Catalog.mkSubscriptionId "checked-mapping-replay-writer")) (must (Catalog.mkDedupKeyId "checked-mapping-replay-writer-v1")) (must (Catalog.mkClaimSite "projection-owner replay_writer async-handler")) :| [])
(must (Catalog.mkClaimSite "projection-owner replay_writer"))
:| [])
(must (Catalog.mkClaimSite "projection-owner replay_writer source"))
projectionCatalog :: Catalog.ProjectionCatalog
projectionCatalog =
Catalog.ProjectionCatalog
[Catalog.SourceDeclaration (must (Catalog.mkSourceId "all")) Catalog.AllStreams "all-streams/generated-codec/v1" (must (Catalog.mkClaimSite "source all"))]
[Catalog.TargetDeclaration (must (Catalog.mkTargetId "replay_table")) (Catalog.QualifiedTable "public" "checked_mapping_replay") Catalog.ClearBeforeReplay [] (must (Catalog.mkClaimSite "target replay_table"))]
[Catalog.RebuildGroupDeclaration (must (Catalog.mkRebuildGroupId "replay_rebuild")) [(must (Catalog.mkTargetId "replay_table"))] [] (must (Catalog.mkClaimSite "rebuild-group replay_rebuild"))]
[]
[]
[Catalog.SubscriptionDeclaration (must (Catalog.mkSubscriptionId "checked-mapping-replay-writer")) "checked-mapping-replay-writer" (must (Catalog.mkSourceId "all")) KirokuSubscription.FromBeginning (must (Catalog.mkClaimSite "projection-owner replay_writer subscription"))]
[Catalog.DedupKeyDeclaration (must (Catalog.mkDedupKeyId "checked-mapping-replay-writer-v1")) "checked-mapping-replay-writer-v1" (must (Catalog.mkClaimSite "projection-owner replay_writer dedup"))]
[Catalog.SomeQueryModelBinding (Catalog.QueryModelBinding (must (Catalog.mkQueryModelId "replay_lookup")) RMReplayLookup.replayLookupReadModel (must (Catalog.mkRebuildGroupId "replay_rebuild")) [(must (Catalog.mkTargetId "replay_table"))] (must (Catalog.mkClaimSite "readmodel replay_lookup")))]
[Catalog.SomeProjectionSet replayWriterProjectionSet]
validatedProjectionCatalog :: Catalog.ValidatedProjectionCatalog
validatedProjectionCatalog = case Catalog.validateProjectionCatalog projectionCatalog of
Catalog.Success catalog -> catalog
Catalog.Failure diagnostics -> error ("keiro-dsl generated an invalid projection catalog: " <> show diagnostics)
projectionCatalogInventory :: Catalog.CatalogInventory
projectionCatalogInventory = Catalog.catalogInventory validatedProjectionCatalog
projectionCatalogRegistrations :: [Catalog.CatalogRegistration]
projectionCatalogRegistrations = Catalog.catalogRegistrations validatedProjectionCatalog
projectionCatalogAsyncRegistrations :: [Catalog.AsyncProjectionRegistration]
projectionCatalogAsyncRegistrations = Catalog.asyncProjectionRegistrations validatedProjectionCatalog
projectionCatalogQuerySupplies :: [Catalog.ResolvedQuerySupply]
projectionCatalogQuerySupplies = Catalog.resolvedQuerySupplies validatedProjectionCatalog
registerProjectionCatalog :: (Store :> es) => Eff es (Either Rebuild.CatalogRegistrationError [Rebuild.GroupRebuildMetadata])
registerProjectionCatalog = Rebuild.registerProjectionCatalog validatedProjectionCatalog
replayRebuildRebuildGroupId :: Catalog.RebuildGroupId
replayRebuildRebuildGroupId = (must (Catalog.mkRebuildGroupId "replay_rebuild"))
startReplayRebuildRebuild :: (IOE :> es, Store :> es) => Rebuild.RebuildOptions -> Eff es (Either Rebuild.CatalogRebuildError Rebuild.RebuildRunReport)
startReplayRebuildRebuild = Rebuild.startCatalogRebuild validatedProjectionCatalog replayRebuildRebuildGroupId