keiro-dsl-0.10.0.0: test/conformance-queue-runtime/Generated/HospitalCapacity/Reservation_work/Queue.hs
{-# LANGUAGE OverloadedRecordDot #-}
-- @generated by keiro-dsl 0.9.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.
module Generated.HospitalCapacity.Reservation_work.Queue
( ReservationWorkItem (..)
, encodeReservationWorkItem
, parseReservationWorkItem
, queuePhysical, queueDlq, queueTable
, groupKeyField, groupKeyFor
) where
import Data.Aeson (Value, object, withObject, (.:), (.=))
import Data.Aeson.Types (parseEither)
import Data.Text (Text)
import qualified Data.Text as T
queuePhysical, queueDlq, queueTable :: Text
queuePhysical = "hospital_capacity_reservation_work"
queueDlq = "hospital_capacity_reservation_work_dlq"
queueTable = "pgmq.q_hospital_capacity_reservation_work"
groupKeyField :: Text
groupKeyField = "reservationId"
groupKeyFor :: ReservationWorkItem -> Text
groupKeyFor payload = payload.reservationId
data ReservationWorkItem = ReservationWorkItem
{ reservationId :: !Text
, hospitalId :: !Text
, commandId :: !Text
, lifeCriticalOverride :: !Bool
}
deriving stock (Eq, Show)
encodeReservationWorkItem :: ReservationWorkItem -> Value
encodeReservationWorkItem p =
object
[ "reservation_id" .= p.reservationId
, "hospital_id" .= p.hospitalId
, "command_id" .= p.commandId
, "life_critical_override" .= p.lifeCriticalOverride
]
parseReservationWorkItem :: Value -> Either Text ReservationWorkItem
parseReservationWorkItem = mapLeftText . parseEither (withObject "ReservationWorkItem" go)
where
go o = ReservationWorkItem <$> o .: "reservation_id" <*> o .: "hospital_id" <*> o .: "command_id" <*> o .: "life_critical_override"
mapLeftText :: Either String b -> Either Text b
mapLeftText = either (Left . T.pack) Right