packages feed

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

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# 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 SkelProcess.Generated.MyService.Nominals (HospitalId (..))
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)

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)