keiro-dsl-0.10.0.0: test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Domain.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
-- @generated by keiro-dsl 0.9.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
module Generated.HospitalCapacity.Reservation.Domain where
import Data.Aeson (FromJSON, ToJSON)
import Data.Proxy (Proxy (..))
import Data.Text (Text)
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Keiki.Shape (CanonicalStateShape, CanonicalTypeName)
import Generated.HospitalCapacity.Nominals (CommandId, parseCommandId, DivertStatus (..), HospitalId, parseHospitalId, PatientAcuity (..), TransferReservationId, parseTransferReservationId)
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
data ReservationVertex = ReservationUnrequested | ReservationHeld | ReservationConfirmed | ReservationExpired | ReservationAdmitted | ReservationReleased
deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
deriving anyclass (ToJSON, FromJSON)
instance CanonicalStateShape ReservationVertex
instance CanonicalTypeName ReservationVertex
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)
]
initialReservationRegs :: RegFile ReservationRegs
initialReservationRegs =
RCons (Proxy @"reservationId") (case parseTransferReservationId "rsv_01h455vb4pex5vsknk084sn02q" of Right parsed -> parsed; Left _ -> error "generated valid ID sample failed to parse") $
RCons (Proxy @"hospitalId") (case parseHospitalId "hosp_01h455vb4pex5vsknk084sn02q" of Right parsed -> parsed; Left _ -> error "generated valid ID sample failed to parse") $
RCons (Proxy @"patientAcuity") GreenTag RNil
$(deriveAggregateCtorsAll ''ReservationCommand ''ReservationRegs)
$(deriveWireCtorsAll ''ReservationEvent)