module Arbor.Monad.Metric.Api.Text
  ( Counter
  , Gauge
  , Tag

  , tags
  , tag
  , counter
  , gauge
  ) where

import Arbor.Monad.Metric.Type (Counter, Gauge, Tag)
import Data.Set                (Set)
import Data.Text               (Text)

import qualified Arbor.Monad.Metric.Type as Z
import qualified Data.Set                as S

counter :: Text -> Counter
counter name = Z.Counter name S.empty
{-# INLINE counter #-}

gauge :: Text -> Gauge
gauge name = Z.Gauge name S.empty
{-# INLINE gauge #-}

tag :: Text -> Text -> Tag
tag = Z.Tag
{-# INLINE tag #-}

tags :: [(Text, Text)] -> Set Tag
tags nvs = S.fromList (uncurry tag <$> nvs)
{-# INLINE tags #-}