packages feed

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)