{-# LANGUAGE TemplateHaskell #-}
module Wire.Sem.Metrics where
import Imports
import Polysemy
import Prometheus (Counter, Gauge)
data Metrics m a where
AddCounter :: Counter -> Double -> Metrics m ()
AddGauge :: Gauge -> Double -> Metrics m ()
makeSem ''Metrics
incCounter :: (Member Metrics r) => Counter -> Sem r ()
incCounter :: forall (r :: EffectRow). Member Metrics r => Counter -> Sem r ()
incCounter Counter
c = Counter -> Double -> Sem r ()
forall (r :: EffectRow).
Member Metrics r =>
Counter -> Double -> Sem r ()
addCounter Counter
c Double
1
incGauge :: (Member Metrics r) => Gauge -> Sem r ()
incGauge :: forall (r :: EffectRow). Member Metrics r => Gauge -> Sem r ()
incGauge Gauge
c = Gauge -> Double -> Sem r ()
forall (r :: EffectRow).
Member Metrics r =>
Gauge -> Double -> Sem r ()
addGauge Gauge
c Double
1