module Hasql.Pool.Observer
(   Observed(..)
,   ObserverAction
)
where

import Hasql.Pool.Prelude


-- |
-- Represents properties of an observed IO action associated with a pool item.
newtype Observed = Observed
    {   Observed -> Rational
latency :: Rational
    } deriving (Int -> Observed -> ShowS
[Observed] -> ShowS
Observed -> String
(Int -> Observed -> ShowS)
-> (Observed -> String) -> ([Observed] -> ShowS) -> Show Observed
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Observed] -> ShowS
$cshowList :: [Observed] -> ShowS
show :: Observed -> String
$cshow :: Observed -> String
showsPrec :: Int -> Observed -> ShowS
$cshowsPrec :: Int -> Observed -> ShowS
Show)


-- |
-- You can use this action to send observed attributes to your metrics backend like Prometheus.
type ObserverAction = Observed -> IO ()