packages feed

keiro-dsl-0.15.0.0: test/fixtures/readmodel-migration-l4.keiro

language keiro-dsl 4
context hospital-capacity

id  TransferReservationId  prefix=rsv
id  HospitalId             prefix=hosp
id  CommandId              prefix=cmd

enum PatientAcuity { RedTag=red YellowTag=yellow GreenTag=green }
enum DivertStatus  { Open=open PartialDivert=partial-divert TotalDivert=total-divert }

aggregate Reservation
  regs
    reservationId    TransferReservationId = placeholder
    hospitalId       HospitalId            = placeholder
    patientAcuity    PatientAcuity         = GreenTag
  states Unrequested Held Confirmed

  command RequestTransferReservation { reservationId hospitalId commandId patientAcuity divertStatus }
  command ConfirmReservation         { reservationId hospitalId commandId }

  event TransferReservationCreated   = fields(RequestTransferReservation)
  event TransferReservationConfirmed { reservationId hospitalId commandId }

  Unrequested -- RequestTransferReservation -->
    guard cmd.divertStatus != DivertStatus.TotalDivert
    emit  TransferReservationCreated
    goto  Held
  Held -- ConfirmReservation --> emit TransferReservationConfirmed ; goto Confirmed

  wire kind=ctorName fields=camelCase schemaVersion=1
  projection transfer_decisions key=reservationId
    status-map { TransferReservationCreated=>held TransferReservationConfirmed=>done }

readmodel transfer_decisions {
  table = "transfer_decisions"
  schema = "hospital_capacity"
  columns {
    reservation_id text required
    hospital_id text required
    status text required
    decided_at timestamptz
  }
  version = 1
  shape = "fnv1a:3717f6d9e3c44bd6"
  consistency = Strong
  scope = category "reservation"
  feed = subscription
  subscription = "hospital-capacity-transfer-decisions-sub"
}