packages feed

keiro-dsl-0.2.0.0: test/conformance-process-full/Generated/SurgeDemo/Surge/EventStream.hs

-- @generated by keiro-dsl; do not edit. Regenerated from the .keiro spec.
module Generated.SurgeDemo.Surge.EventStream (
    surgeCategory,
    surgeEventStream,
    surgeEventStreamDef,
    SurgeEventStream,
    SurgeEventStreamDef,
) where

import Generated.SurgeDemo.Surge.Codec (surgeCodec)
import Generated.SurgeDemo.Surge.Domain
import Keiki.Core (HsPred)
import Keiro.EventStream (EventStream (..), SnapshotPolicy (..))
import Keiro.EventStream.Validate (ValidatedEventStream, mkEventStreamOrThrow)
import Keiro.Stream qualified as Stream
import SurgeDemo.Surge.Holes (surgeTransducer)

-- The validated aggregate stream category (hole-kind 5: referenced, never retyped).
-- Entity streams are '<category>-<id>' via Keiro.Stream.entityStream.
-- categoryUnsafe is safe here because this generated literal passed the DSL category proof.
surgeCategory :: Stream.StreamCategory a
surgeCategory = Stream.categoryUnsafe "surge"

type SurgeEventStreamDef =
    EventStream (HsPred SurgeRegs SurgeCommand) SurgeRegs SurgeVertex SurgeCommand SurgeEvent

type SurgeEventStream =
    ValidatedEventStream (HsPred SurgeRegs SurgeCommand) SurgeRegs SurgeVertex SurgeCommand SurgeEvent

surgeEventStreamDef :: SurgeEventStreamDef
surgeEventStreamDef =
    EventStream
        { transducer = surgeTransducer
        , initialState = SurgeWatching
        , initialRegisters = initialSurgeRegs
        , eventCodec = surgeCodec
        , resolveStreamName = Stream.streamName
        , snapshotPolicy = Never
        , stateCodec = Nothing
        }

surgeEventStream :: SurgeEventStream
surgeEventStream =
    mkEventStreamOrThrow "Surge" surgeEventStreamDef