module Wire.Sem.Metrics.IO where import Imports import Polysemy import qualified Prometheus as Prom import Wire.Sem.Metrics runMetricsToIO :: (Member (Embed IO) r) => InterpreterFor Metrics r runMetricsToIO :: forall (r :: EffectRow). Member (Embed IO) r => InterpreterFor Metrics r runMetricsToIO = (forall (rInitial :: EffectRow) x. Metrics (Sem rInitial) x -> Sem r x) -> Sem (Metrics : r) a -> Sem r a forall (e :: (* -> *) -> * -> *) (r :: EffectRow) a. FirstOrder e "interpret" => (forall (rInitial :: EffectRow) x. e (Sem rInitial) x -> Sem r x) -> Sem (e : r) a -> Sem r a interpret ((forall (rInitial :: EffectRow) x. Metrics (Sem rInitial) x -> Sem r x) -> Sem (Metrics : r) a -> Sem r a) -> (forall (rInitial :: EffectRow) x. Metrics (Sem rInitial) x -> Sem r x) -> Sem (Metrics : r) a -> Sem r a forall a b. (a -> b) -> a -> b $ \case AddCounter Counter c Double n -> IO x -> Sem r x forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed (IO x -> Sem r x) -> (IO Bool -> IO x) -> IO Bool -> Sem r x forall b c a. (b -> c) -> (a -> b) -> a -> c . IO Bool -> IO x IO Bool -> IO () forall (f :: * -> *) a. Functor f => f a -> f () void (IO Bool -> Sem r x) -> IO Bool -> Sem r x forall a b. (a -> b) -> a -> b $ forall (m :: * -> *). MonadMonitor m => Counter -> Double -> m Bool Prom.addCounter @IO Counter c Double n AddGauge Gauge g Double n -> IO () -> Sem r () forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed (IO () -> Sem r ()) -> IO () -> Sem r () forall a b. (a -> b) -> a -> b $ forall (m :: * -> *). MonadMonitor m => Gauge -> Double -> m () Prom.addGauge @IO Gauge g Double n ignoreMetrics :: InterpreterFor Metrics r ignoreMetrics :: forall (r :: EffectRow) a. Sem (Metrics : r) a -> Sem r a ignoreMetrics = (forall (rInitial :: EffectRow) x. Metrics (Sem rInitial) x -> Sem r x) -> Sem (Metrics : r) a -> Sem r a forall (e :: (* -> *) -> * -> *) (r :: EffectRow) a. FirstOrder e "interpret" => (forall (rInitial :: EffectRow) x. e (Sem rInitial) x -> Sem r x) -> Sem (e : r) a -> Sem r a interpret ((forall (rInitial :: EffectRow) x. Metrics (Sem rInitial) x -> Sem r x) -> Sem (Metrics : r) a -> Sem r a) -> (forall (rInitial :: EffectRow) x. Metrics (Sem rInitial) x -> Sem r x) -> Sem (Metrics : r) a -> Sem r a forall a b. (a -> b) -> a -> b $ \case AddCounter Counter _ Double _ -> x -> Sem r x forall a. a -> Sem r a forall (f :: * -> *) a. Applicative f => a -> f a pure () AddGauge Gauge _ Double _ -> x -> Sem r x forall a. a -> Sem r a forall (f :: * -> *) a. Applicative f => a -> f a pure ()