keiro-dsl-0.2.0.0: test/conformance-process-full/Generated/SurgeDemo/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 Generated.SurgeDemo.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
data SurgeVertex = SurgeWatching | SurgeNoted | SurgeFired
deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
data NoteSurgeThresholdData = NoteSurgeThresholdData
{ hospitalId :: !HospitalId
}
deriving stock (Generic, Eq, Show)
data MarkSurgeTimerFiredData = MarkSurgeTimerFiredData
{ hospitalId :: !HospitalId
}
deriving stock (Generic, Eq, Show)
data SurgeCommand = NoteSurgeThreshold !NoteSurgeThresholdData
| MarkSurgeTimerFired !MarkSurgeTimerFiredData
deriving stock (Generic, Eq, Show)
data SurgeThresholdNotedData = SurgeThresholdNotedData
{ hospitalId :: !HospitalId
}
deriving stock (Generic, Eq, Show)
data SurgeTimerFiredData = SurgeTimerFiredData
{ hospitalId :: !HospitalId
}
deriving stock (Generic, Eq, Show)
data SurgeEvent = SurgeThresholdNoted !SurgeThresholdNotedData
| SurgeTimerFired !SurgeTimerFiredData
deriving stock (Generic, Eq, Show)
type SurgeRegs =
'[ '("surgeState", SurgeVertex)
]
initialSurgeRegs :: RegFile SurgeRegs
initialSurgeRegs =
RCons (Proxy @"surgeState") SurgeWatching RNil
$(deriveAggregateCtorsAll ''SurgeCommand ''SurgeRegs)
$(deriveWireCtorsAll ''SurgeEvent)