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 :: Text -> Sem r ()
debug =
  Log (Sem r) () -> Sem r ()
forall (e :: (* -> *) -> * -> *) (r :: [(* -> *) -> * -> *]) a.
Member e r =>
e (Sem r) a -> Sem r a
send (Log (Sem r) () -> Sem r ())
-> (Text -> Log (Sem r) ()) -> Text -> Sem r ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Log (Sem r) ()
forall (m :: * -> *). HasCallStack => Text -> Log m ()
Debug

info ::
  HasCallStack =>
  Member Log r =>
  Text ->
  Sem r ()
info :: Text -> Sem r ()
info =
  Log (Sem r) () -> Sem r ()
forall (e :: (* -> *) -> * -> *) (r :: [(* -> *) -> * -> *]) a.
Member e r =>
e (Sem r) a -> Sem r a
send (Log (Sem r) () -> Sem r ())
-> (Text -> Log (Sem r) ()) -> Text -> Sem r ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Log (Sem r) ()
forall (m :: * -> *). HasCallStack => Text -> Log m ()
Info

warn ::
  HasCallStack =>
  Member Log r =>
  Text ->
  Sem r ()
warn :: Text -> Sem r ()
warn =
  Log (Sem r) () -> Sem r ()
forall (e :: (* -> *) -> * -> *) (r :: [(* -> *) -> * -> *]) a.
Member e r =>
e (Sem r) a -> Sem r a
send (Log (Sem r) () -> Sem r ())
-> (Text -> Log (Sem r) ()) -> Text -> Sem r ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Log (Sem r) ()
forall (m :: * -> *). HasCallStack => Text -> Log m ()
Warn

error ::
  HasCallStack =>
  Member Log r =>
  Text ->
  Sem r ()
error :: Text -> Sem r ()
error =
  Log (Sem r) () -> Sem r ()
forall (e :: (* -> *) -> * -> *) (r :: [(* -> *) -> * -> *]) a.
Member e r =>
e (Sem r) a -> Sem r a
send (Log (Sem r) () -> Sem r ())
-> (Text -> Log (Sem r) ()) -> Text -> Sem r ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Log (Sem r) ()
forall (m :: * -> *). HasCallStack => Text -> Log m ()
Error

errorPlus ::
  HasCallStack =>
  Traversable t =>
  Member Log r =>
  Text ->
  t Text ->
  Sem r ()
errorPlus :: Text -> t Text -> Sem r ()
errorPlus =
  Log (Sem r) () -> Sem r ()
forall (e :: (* -> *) -> * -> *) (r :: [(* -> *) -> * -> *]) a.
Member e r =>
e (Sem r) a -> Sem r a
send (Log (Sem r) () -> Sem r ())
-> (Text -> t Text -> Log (Sem r) ()) -> Text -> t Text -> Sem r ()
forall c d a b. (c -> d) -> (a -> b -> c) -> a -> b -> d
.: Text -> t Text -> Log (Sem r) ()
forall (t :: * -> *) (m :: * -> *).
(HasCallStack, Traversable t) =>
Text -> t Text -> Log m ()
ErrorPlus