packages feed

keiro-dsl-0.10.0.0: test/conformance-skeletons/SkelQueue/Generated/MyService/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 SkelQueue.Generated.MyService.Reservation_work.Queue
  ( ReservationWorkItem (..)
  , encodeReservationWorkItem
  , parseReservationWorkItem
  , queuePhysical, queueDlq, queueTable

  ) 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 = "my_service_reservation_work"
queueDlq = "my_service_reservation_work_dlq"
queueTable = "pgmq.q_my_service_reservation_work"

data ReservationWorkItem = ReservationWorkItem
  { reservationId :: !Text
  , hospitalId :: !Text
  }
  deriving stock (Eq, Show)

encodeReservationWorkItem :: ReservationWorkItem -> Value
encodeReservationWorkItem p =
  object
    [ "reservation_id" .= p.reservationId
    , "hospital_id" .= p.hospitalId
    ]

parseReservationWorkItem :: Value -> Either Text ReservationWorkItem
parseReservationWorkItem = mapLeftText . parseEither (withObject "ReservationWorkItem" go)
  where
    go o = ReservationWorkItem <$> o .: "reservation_id" <*> o .: "hospital_id"

mapLeftText :: Either String b -> Either Text b
mapLeftText = either (Left . T.pack) Right