packages feed

keiro-dsl-0.2.0.0: test/conformance-skeletons/SkelProcess/Generated/MyService/Surge/Domain.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# OPTIONS_GHC -Wno-unused-top-binds #-}

-- @generated by keiro-dsl; do not edit. Regenerated from the .keiro spec.
module SkelProcess.Generated.MyService.Surge.Domain where

import Data.Proxy (Proxy (..))
import Data.Text (Text)
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)

newtype HospitalId = HospitalId Text
    deriving stock (Generic, Eq, Ord, Show)

hospitalIdText :: HospitalId -> Text
hospitalIdText (HospitalId t) = t

newtype CommandId = CommandId Text
    deriving stock (Generic, Eq, Ord, Show)

commandIdText :: CommandId -> Text
commandIdText (CommandId t) = t

data SurgeVertex = SurgeIdle | SurgeFired
    deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)

data NoteSurgeThresholdData = NoteSurgeThresholdData
    { hospitalId :: !HospitalId
    , availableIcuBeds :: !Int
    , redDemand :: !Int
    , timerId :: !Text
    }
    deriving stock (Generic, Eq, Show)

data MarkSurgeTimerFiredData = MarkSurgeTimerFiredData
    { hospitalId :: !HospitalId
    , timerId :: !Text
    }
    deriving stock (Generic, Eq, Show)

data SurgeCommand
    = NoteSurgeThreshold !NoteSurgeThresholdData
    | MarkSurgeTimerFired !MarkSurgeTimerFiredData
    deriving stock (Generic, Eq, Show)

data SurgeThresholdNotedData = SurgeThresholdNotedData
    { hospitalId :: !HospitalId
    , availableIcuBeds :: !Int
    , redDemand :: !Int
    , timerId :: !Text
    }
    deriving stock (Generic, Eq, Show)

data SurgeTimerMarkedData = SurgeTimerMarkedData
    { hospitalId :: !HospitalId
    , timerId :: !Text
    }
    deriving stock (Generic, Eq, Show)

data SurgeEvent
    = SurgeThresholdNoted !SurgeThresholdNotedData
    | SurgeTimerMarked !SurgeTimerMarkedData
    deriving stock (Generic, Eq, Show)

type SurgeRegs =
    '[]

initialSurgeRegs :: RegFile SurgeRegs
initialSurgeRegs =
    RNil

$(deriveAggregateCtorsAll ''SurgeCommand ''SurgeRegs)

$(deriveWireCtorsAll ''SurgeEvent)