packages feed

polysemy-conc-0.2.0.0: lib/Polysemy/Conc/Queue/Result.hs

{-# options_haddock hide #-}
module Polysemy.Conc.Queue.Result where

import qualified Polysemy.Conc.Data.QueueResult as QueueResult
import Polysemy.Conc.Data.QueueResult (QueueResult)

closedResult ::
  Maybe d ->
  QueueResult d
closedResult = \case
  Nothing -> QueueResult.Closed
  Just d -> QueueResult.Success d
{-# inline closedResult #-}

naResult ::
  Maybe d ->
  QueueResult d
naResult = \case
  Nothing -> QueueResult.NotAvailable
  Just d -> QueueResult.Success d
{-# inline naResult #-}

closedNaResult ::
  Maybe (Maybe d) ->
  QueueResult d
closedNaResult = \case
  Nothing -> QueueResult.Closed
  Just Nothing -> QueueResult.NotAvailable
  Just (Just d) -> QueueResult.Success d
{-# inline closedNaResult #-}

closedBoolResult ::
  Maybe Bool ->
  QueueResult ()
closedBoolResult = \case
  Nothing -> QueueResult.Closed
  Just False -> QueueResult.NotAvailable
  Just True -> QueueResult.Success ()
{-# inline closedBoolResult #-}

-- |Turn a 'Success' into 'Just'.
resultToMaybe :: QueueResult d -> Maybe d
resultToMaybe = \case
  QueueResult.Success d -> Just d
  QueueResult.NotAvailable -> Nothing
  QueueResult.Closed -> Nothing
{-# inline resultToMaybe #-}