packages feed

keiro-dsl-0.9.0.0: test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Domain.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
-- @generated by keiro-dsl 0.8.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
module Generated.HospitalCapacity.Surge.Domain where

import Data.Proxy (Proxy (..))
import Data.Text (Text)
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Generated.HospitalCapacity.Nominals (HospitalId, parseHospitalId)
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)

data SurgeVertex = SurgeIdle
  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)