packages feed

keiro-dsl-0.2.0.0: test/conformance-queue-runtime/Generated/HospitalCapacity/Reservation_work/QueuePolicy.hs

{-# LANGUAGE OverloadedStrings #-}

-- @generated by keiro-dsl; do not edit. Regenerated from the .keiro spec.
module Generated.HospitalCapacity.Reservation_work.QueuePolicy (
    retryPolicy,
    jobOutcomeFor,
    jobOrdering,
    jobTuningFor,
    queueProvision,
) where

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

jobOrdering :: JobOrdering
jobOrdering = FifoThroughput

-- 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 = withFifoIndexProvision (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.
jobOutcomeFor :: Text -> JobOutcome
jobOutcomeFor o = case o of
    "storeFailure" -> Retry (RetryDelay 5)
    "commandRejected" -> Dead "dead-lettered"
    "decodeFailure" -> Dead "dead-lettered"
    "onCodecReject" -> Dead "dead-lettered"
    _ -> Retry (RetryDelay 5)