packages feed

keiro-dsl-0.9.0.0: test/conformance/Generated/HospitalCapacity/Reservation/Domain.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
-- @generated by keiro-dsl 0.8.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
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, 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)

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)