packages feed

influxdb-1.9.3.2: examples/write-udp.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Exception

import Control.Lens
import Data.Time.Clock
import Network.Socket

import Database.InfluxDB
import qualified Database.InfluxDB.Write.UDP as UDP

main :: IO ()
main = bracket (socket AF_INET Datagram defaultProtocol) close $ \sock -> do
  let localhost = tupleToHostAddress (127, 0, 0, 1)
  let params = UDP.writeParams sock $ SockAddrInet 8089 localhost
      tags1 =
          [ ("tag1", "A")
          , ("tag2", "B")
          ]
      fields1 =
        [ ("val1", FieldInt 10)
        , ("val2", FieldBool True)
        ]
      fields2 =
        [ ("val1", FieldInt 1)
        , ("val2", FieldBool False)
        ]
  UDP.write params $
    Line "measurement1" tags1 fields1 (Nothing :: Maybe UTCTime)
  now <- getCurrentTime
  UDP.write
    (params & UDP.precision .~ Millisecond)
    (Line "measurement1" tags1 fields2 (Just now))