packages feed

polysemy-http-0.1.0.0: lib/Polysemy/Http/Data/Log.hs

module Polysemy.Http.Data.Log where

import Polysemy.Internal (send)

-- |An effect that wraps 'Colog.Polysemy.Log' for less boilerplate.
-- Constructors are manual because 'HasCallStack' is always in scope.
data Log :: Effect where
  Debug :: HasCallStack => Text -> Log m ()
  Info :: HasCallStack => Text -> Log m ()
  Warn :: HasCallStack => Text -> Log m ()
  Error :: HasCallStack => Text -> Log m ()
  ErrorPlus :: (HasCallStack, Traversable t) => Text -> t Text -> Log m ()

debug ::
  HasCallStack =>
  Member Log r =>
  Text ->
  Sem r ()
debug =
  send . Debug

info ::
  HasCallStack =>
  Member Log r =>
  Text ->
  Sem r ()
info =
  send . Info

warn ::
  HasCallStack =>
  Member Log r =>
  Text ->
  Sem r ()
warn =
  send . Warn

error ::
  HasCallStack =>
  Member Log r =>
  Text ->
  Sem r ()
error =
  send . Error

errorPlus ::
  HasCallStack =>
  Traversable t =>
  Member Log r =>
  Text ->
  t Text ->
  Sem r ()
errorPlus =
  send .: ErrorPlus