packages feed

keiro-dsl-0.9.0.0: test/conformance-skeletons/SkelQueue/Generated/MyService/Reservation_work/QueuePolicy.hs

-- @generated by keiro-dsl 0.8.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.
module SkelQueue.Generated.MyService.Reservation_work.QueuePolicy
  ( ReservationWorkOutcome (..)
  , retryPolicy, jobOutcomeFor
  , jobOrdering, jobTuningFor, queueProvision
  ) where

import Keiro.PGMQ.Job (JobOrdering (..), JobOutcome (..), JobTuning, PartitionSpec (..), QueueProvision, RetryDelay (..), RetryPolicy (..), partitionedProvision, standardProvision, unloggedProvision, withFifoIndexProvision, withOrdering)

jobOrdering :: JobOrdering
jobOrdering = Unordered

-- Deployment owns visibility timeout, batch size, and polling; the spec owns ordering.
jobTuningFor :: JobTuning -> JobTuning
jobTuningFor = withOrdering jobOrdering

-- Pass this to ensureJobQueueWith at worker startup. FIFO adds the required GIN index; the DLQ remains standard.
queueProvision :: QueueProvision
queueProvision = standardProvision

retryPolicy :: RetryPolicy
retryPolicy =
  RetryPolicy
    { maxRetries = 3
    , defaultRetryDelay = RetryDelay 5
    , useDeadLetter = True
    }

-- The consumer JobOutcome disposition over the spec's named domain outcomes,
-- lowered to the live Keiro.PGMQ.Job.JobOutcome.
data ReservationWorkOutcome
  = StoreFailure
  | CommandRejected
  | DecodeFailure
  | OnCodecReject
  deriving stock (Eq, Show)

jobOutcomeFor :: ReservationWorkOutcome -> JobOutcome
jobOutcomeFor o = case o of
  StoreFailure -> Retry (RetryDelay 5)
  CommandRejected -> Dead "dead-lettered"
  DecodeFailure -> Dead "dead-lettered"
  OnCodecReject -> Dead "dead-lettered"