keiro-dsl-0.7.0.0: test/conformance/Generated/HospitalCapacity/Reservation/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 Generated.HospitalCapacity.Reservation.Domain where
import Data.Proxy (Proxy (..))
import Data.Text (Text)
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Generated.HospitalCapacity.Nominals (CommandId (..), DivertStatus (..), HospitalId (..), PatientAcuity (..), TransferReservationId (..))
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
data ReservationVertex = ReservationUnrequested | ReservationHeld | ReservationConfirmed | ReservationExpired | ReservationAdmitted | ReservationReleased
deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
data RequestTransferReservationData = RequestTransferReservationData
{ reservationId :: !TransferReservationId
, hospitalId :: !HospitalId
, commandId :: !CommandId
, patientAcuity :: !PatientAcuity
, divertStatus :: !DivertStatus
, lifeCriticalOverride :: !Bool
}
deriving stock (Generic, Eq, Show)
data ConfirmReservationData = ConfirmReservationData
{ reservationId :: !TransferReservationId
, hospitalId :: !HospitalId
, commandId :: !CommandId
}
deriving stock (Generic, Eq, Show)
data ReservationCommand = RequestTransferReservation !RequestTransferReservationData
| ConfirmReservation !ConfirmReservationData
deriving stock (Generic, Eq, Show)
data TransferReservationCreatedData = TransferReservationCreatedData
{ reservationId :: !TransferReservationId
, hospitalId :: !HospitalId
, commandId :: !CommandId
, patientAcuity :: !PatientAcuity
, divertStatus :: !DivertStatus
, lifeCriticalOverride :: !Bool
}
deriving stock (Generic, Eq, Show)
data TransferReservationConfirmedData = TransferReservationConfirmedData
{ reservationId :: !TransferReservationId
, hospitalId :: !HospitalId
, commandId :: !CommandId
}
deriving stock (Generic, Eq, Show)
data ReservationEvent = TransferReservationCreated !TransferReservationCreatedData
| TransferReservationConfirmed !TransferReservationConfirmedData
deriving stock (Generic, Eq, Show)
type ReservationRegs =
'[ '("reservationId", TransferReservationId)
, '("hospitalId", HospitalId)
, '("patientAcuity", PatientAcuity)
, '("reservationState", ReservationVertex)
]
initialReservationRegs :: RegFile ReservationRegs
initialReservationRegs =
RCons (Proxy @"reservationId") (TransferReservationId "") $
RCons (Proxy @"hospitalId") (HospitalId "") $
RCons (Proxy @"patientAcuity") GreenTag $
RCons (Proxy @"reservationState") ReservationUnrequested RNil
$(deriveAggregateCtorsAll ''ReservationCommand ''ReservationRegs)
$(deriveWireCtorsAll ''ReservationEvent)