packages feed

pgmq-effectful-0.7.0.0: test/UmbrellaExportsSpec.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeOperators #-}

-- Compile witnesses: this module intentionally uses only the public umbrella.
module UmbrellaExportsSpec (grouped, polling, creation, arguments, metric, classifiers, inspection, lenientMetrics, inspectionArguments) where

import Data.Int (Int32, Int64)
import Data.Text (Text)
import Data.Vector (Vector)
import Effectful (Eff, (:>))
import Pgmq.Effectful

grouped :: (Pgmq :> es) => ReadGrouped -> [Eff es (Vector Message)]
grouped args = [readGrouped args, readGroupedRoundRobin args, readGroupedHead args]

polling :: (Pgmq :> es) => ReadGroupedWithPoll -> [Eff es (Vector Message)]
polling args = [readGroupedWithPoll args, readGroupedRoundRobinWithPoll args, readGroupedHeadWithPoll args]

creation :: (Pgmq :> es) => CreatePartitionedQueue -> Int32 -> [Eff es ()]
creation args n = [createPartitionedQueue args, createPartitionedQueueWithPremake args n]

arguments :: QueueName -> (ReadGrouped, ReadGroupedWithPoll, CreatePartitionedQueue)
arguments q = (ReadGrouped q 30 10, ReadGroupedWithPoll q 30 10 5 100, CreatePartitionedQueue q "100" "1000")

metric :: QueueMetrics -> Maybe Int64
metric = defaultPartitionLength

classifiers :: PgmqRuntimeError -> (Bool, Bool)
classifiers err = (isTransient err, isAmbiguousReply err)

inspection :: (Pgmq :> es) => PeekMessages -> LookupMessage -> (Eff es (Vector Message), Eff es (Vector ArchivedMessage), Eff es (Maybe Message), Eff es (Maybe ArchivedMessage))
inspection page one = (peekMessages page, peekArchivedMessages page, lookupMessage one, lookupArchivedMessage one)

lenientMetrics :: (Pgmq :> es) => Text -> Eff es QueueMetrics
lenientMetrics = queueMetricsUnvalidated

inspectionArguments :: Text -> (PeekMessages, LookupMessage)
inspectionArguments q = (PeekMessages q Nothing 50, LookupMessage q (MessageId 1))