packages feed

classy-influxdb-simple 0.1.0.4 → 0.2.0.0

raw patch · 4 files changed

+98/−23 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Database.InfluxDB.Simple.Classy.Types: Hours :: Precision
+ Database.InfluxDB.Simple.Classy.Types: Microseconds :: Precision
+ Database.InfluxDB.Simple.Classy.Types: Milliseconds :: Precision
+ Database.InfluxDB.Simple.Classy.Types: Minutes :: Precision
+ Database.InfluxDB.Simple.Classy.Types: Nanoseconds :: Precision
+ Database.InfluxDB.Simple.Classy.Types: Seconds :: Precision
+ Database.InfluxDB.Simple.Classy.Types: _Hours :: AsPrecision r_adLo => Prism' r_adLo ()
+ Database.InfluxDB.Simple.Classy.Types: _Microseconds :: AsPrecision r_adLo => Prism' r_adLo ()
+ Database.InfluxDB.Simple.Classy.Types: _Milliseconds :: AsPrecision r_adLo => Prism' r_adLo ()
+ Database.InfluxDB.Simple.Classy.Types: _Minutes :: AsPrecision r_adLo => Prism' r_adLo ()
+ Database.InfluxDB.Simple.Classy.Types: _Nanoseconds :: AsPrecision r_adLo => Prism' r_adLo ()
+ Database.InfluxDB.Simple.Classy.Types: _Precision :: AsPrecision r_adLo => Prism' r_adLo Precision
+ Database.InfluxDB.Simple.Classy.Types: _Seconds :: AsPrecision r_adLo => Prism' r_adLo ()
+ Database.InfluxDB.Simple.Classy.Types: class AsPrecision r_adLo where _Nanoseconds = (.) _Precision _Nanoseconds _Microseconds = (.) _Precision _Microseconds _Milliseconds = (.) _Precision _Milliseconds _Seconds = (.) _Precision _Seconds _Minutes = (.) _Precision _Minutes _Hours = (.) _Precision _Hours
+ Database.InfluxDB.Simple.Classy.Types: data Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: Hours :: Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: Microseconds :: Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: Milliseconds :: Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: Minutes :: Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: Nanoseconds :: Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: Seconds :: Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: _Hours :: AsPrecision r_adLo => Prism' r_adLo ()
+ Database.InfluxDB.Simple.Classy.Types.Precision: _Microseconds :: AsPrecision r_adLo => Prism' r_adLo ()
+ Database.InfluxDB.Simple.Classy.Types.Precision: _Milliseconds :: AsPrecision r_adLo => Prism' r_adLo ()
+ Database.InfluxDB.Simple.Classy.Types.Precision: _Minutes :: AsPrecision r_adLo => Prism' r_adLo ()
+ Database.InfluxDB.Simple.Classy.Types.Precision: _Nanoseconds :: AsPrecision r_adLo => Prism' r_adLo ()
+ Database.InfluxDB.Simple.Classy.Types.Precision: _Precision :: AsPrecision r_adLo => Prism' r_adLo Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: _Seconds :: AsPrecision r_adLo => Prism' r_adLo ()
+ Database.InfluxDB.Simple.Classy.Types.Precision: class AsPrecision r_adLo where _Nanoseconds = (.) _Precision _Nanoseconds _Microseconds = (.) _Precision _Microseconds _Milliseconds = (.) _Precision _Milliseconds _Seconds = (.) _Precision _Seconds _Minutes = (.) _Precision _Minutes _Hours = (.) _Precision _Hours
+ Database.InfluxDB.Simple.Classy.Types.Precision: data Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: instance Database.InfluxDB.Simple.Classy.Types.Precision.AsPrecision Data.ByteString.Internal.ByteString
+ Database.InfluxDB.Simple.Classy.Types.Precision: instance Database.InfluxDB.Simple.Classy.Types.Precision.AsPrecision Data.Text.Internal.Text
+ Database.InfluxDB.Simple.Classy.Types.Precision: instance Database.InfluxDB.Simple.Classy.Types.Precision.AsPrecision Database.InfluxDB.Simple.Classy.Types.Precision.Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: instance Database.InfluxDB.Simple.Classy.Types.Precision.AsPrecision GHC.Base.String
+ Database.InfluxDB.Simple.Classy.Types.Precision: instance GHC.Classes.Eq Database.InfluxDB.Simple.Classy.Types.Precision.Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: instance GHC.Classes.Ord Database.InfluxDB.Simple.Classy.Types.Precision.Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: instance GHC.Enum.Enum Database.InfluxDB.Simple.Classy.Types.Precision.Precision
+ Database.InfluxDB.Simple.Classy.Types.Precision: instance GHC.Show.Show Database.InfluxDB.Simple.Classy.Types.Precision.Precision
- Database.InfluxDB.Simple.Classy: queryData :: (CanInflux m e, IsDb db) => InfluxDBConfig -> db -> InfluxQuery -> m Value
+ Database.InfluxDB.Simple.Classy: queryData :: (CanInflux m e, IsDb db) => InfluxDBConfig -> db -> Precision -> InfluxQuery -> m Value
- Database.InfluxDB.Simple.Classy: queryDataToCSV :: (CanInflux m e, IsDb db) => InfluxDBConfig -> db -> InfluxQuery -> m ByteString
+ Database.InfluxDB.Simple.Classy: queryDataToCSV :: (CanInflux m e, IsDb db) => InfluxDBConfig -> db -> Precision -> InfluxQuery -> m ByteString
- Database.InfluxDB.Simple.Classy: writeData :: (CanInflux m e, IsDb db, ToLine l) => InfluxDBConfig -> db -> l -> m ()
+ Database.InfluxDB.Simple.Classy: writeData :: (CanInflux m e, IsDb db, ToLine l) => InfluxDBConfig -> db -> Precision -> l -> m ()
- Database.InfluxDB.Simple.Classy.Types: _CommsOrInfluxError :: AsInfluxDbError r_aeyR => Prism' r_aeyR ByteString
+ Database.InfluxDB.Simple.Classy.Types: _CommsOrInfluxError :: AsInfluxDbError r_aiXe => Prism' r_aiXe ByteString
- Database.InfluxDB.Simple.Classy.Types: _InfluxDbError :: AsInfluxDbError r_aeyR => Prism' r_aeyR InfluxDbError
+ Database.InfluxDB.Simple.Classy.Types: _InfluxDbError :: AsInfluxDbError r_aiXe => Prism' r_aiXe InfluxDbError
- Database.InfluxDB.Simple.Classy.Types: _ParseError :: AsInfluxDbError r_aeyR => Prism' r_aeyR ByteString
+ Database.InfluxDB.Simple.Classy.Types: _ParseError :: AsInfluxDbError r_aiXe => Prism' r_aiXe ByteString
- Database.InfluxDB.Simple.Classy.Types: _UnknownError :: AsInfluxDbError r_aeyR => Prism' r_aeyR (InfluxRqType, SomeException)
+ Database.InfluxDB.Simple.Classy.Types: _UnknownError :: AsInfluxDbError r_aiXe => Prism' r_aiXe (InfluxRqType, SomeException)
- Database.InfluxDB.Simple.Classy.Types: basicInfluxOpts :: IsDb a => Options -> InfluxDBConfig -> a -> Options
+ Database.InfluxDB.Simple.Classy.Types: basicInfluxOpts :: IsDb a => Options -> InfluxDBConfig -> a -> Precision -> Options
- Database.InfluxDB.Simple.Classy.Types: class AsInfluxDbError r_aeyR where _CommsOrInfluxError = (.) _InfluxDbError _CommsOrInfluxError _ParseError = (.) _InfluxDbError _ParseError _UnknownError = (.) _InfluxDbError _UnknownError
+ Database.InfluxDB.Simple.Classy.Types: class AsInfluxDbError r_aiXe where _CommsOrInfluxError = (.) _InfluxDbError _CommsOrInfluxError _ParseError = (.) _InfluxDbError _ParseError _UnknownError = (.) _InfluxDbError _UnknownError
- Database.InfluxDB.Simple.Classy.Types: class HasInfluxDBConfig c_aenD where idbHost = (.) influxDBConfig idbHost idbPass = (.) influxDBConfig idbPass idbPort = (.) influxDBConfig idbPort idbUser = (.) influxDBConfig idbUser
+ Database.InfluxDB.Simple.Classy.Types: class HasInfluxDBConfig c_aiNx where idbHost = (.) influxDBConfig idbHost idbPass = (.) influxDBConfig idbPass idbPort = (.) influxDBConfig idbPort idbUser = (.) influxDBConfig idbUser
- Database.InfluxDB.Simple.Classy.Types: idbHost :: HasInfluxDBConfig c_aenD => Lens' c_aenD ByteString
+ Database.InfluxDB.Simple.Classy.Types: idbHost :: HasInfluxDBConfig c_aiNx => Lens' c_aiNx ByteString
- Database.InfluxDB.Simple.Classy.Types: idbPass :: HasInfluxDBConfig c_aenD => Lens' c_aenD ByteString
+ Database.InfluxDB.Simple.Classy.Types: idbPass :: HasInfluxDBConfig c_aiNx => Lens' c_aiNx ByteString
- Database.InfluxDB.Simple.Classy.Types: idbPort :: HasInfluxDBConfig c_aenD => Lens' c_aenD Int
+ Database.InfluxDB.Simple.Classy.Types: idbPort :: HasInfluxDBConfig c_aiNx => Lens' c_aiNx Int
- Database.InfluxDB.Simple.Classy.Types: idbUser :: HasInfluxDBConfig c_aenD => Lens' c_aenD ByteString
+ Database.InfluxDB.Simple.Classy.Types: idbUser :: HasInfluxDBConfig c_aiNx => Lens' c_aiNx ByteString
- Database.InfluxDB.Simple.Classy.Types: influxDBConfig :: HasInfluxDBConfig c_aenD => Lens' c_aenD InfluxDBConfig
+ Database.InfluxDB.Simple.Classy.Types: influxDBConfig :: HasInfluxDBConfig c_aiNx => Lens' c_aiNx InfluxDBConfig

Files

classy-influxdb-simple.cabal view
@@ -1,5 +1,5 @@ name:                classy-influxdb-simple-version:             0.1.0.4+version:             0.2.0.0 synopsis:            Super simple InfluxDB package in Classy-MTL style -- description: homepage:            https://github.com/mankyKitty/classy-influxdb-simple#readme@@ -17,6 +17,7 @@   hs-source-dirs:      src   exposed-modules:     Database.InfluxDB.Simple.Classy                      , Database.InfluxDB.Simple.Classy.Types+                     , Database.InfluxDB.Simple.Classy.Types.Precision   build-depends:       base >= 4.7 && < 5                      , wreq                      , lens
src/Database/InfluxDB/Simple/Classy.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE OverloadedStrings     #-}-{-# LANGUAGE TemplateHaskell       #-} module Database.InfluxDB.Simple.Classy   ( writeData   , queryData@@ -22,6 +21,7 @@  import           Database.InfluxDB.Simple.Classy.Types (AsInfluxDbError (..),                                                         CanInflux,+                                                        Precision,                                                         HasInfluxDBConfig (..),                                                         InfluxDBConfig,                                                         InfluxDbError (..),@@ -74,13 +74,14 @@      )   => InfluxDBConfig   -> db+  -> Precision   -> l   -> m ()-writeData c db l =+writeData c db prec l =   runInflux (W.postWith o (writeUrl c) (toLine l)) Write win   where     win = pure . const ()-    o = basicInfluxOpts W.defaults c db+    o = basicInfluxOpts W.defaults c db prec  -- | -- Ask Influx for some data and return any results in CSV format:@@ -105,12 +106,13 @@      )   => InfluxDBConfig   -> db+  -> Precision   -> InfluxQuery   -> m ByteString-queryDataToCSV c db (InfluxQuery q) =+queryDataToCSV c db prec (InfluxQuery q) =   runInflux (W.getWith o (queryUrl c)) QueryCSV (pure . view W.responseBody)   where-    o = basicInfluxOpts W.defaults c db+    o = basicInfluxOpts W.defaults c db prec       & W.param "q" .~ [Text.decodeUtf8 q]       & W.header "Accept" .~ ["application/csv"] @@ -123,13 +125,14 @@      )   => InfluxDBConfig   -> db+  -> Precision   -> InfluxQuery   -> m Value-queryData c db (InfluxQuery q) =+queryData c db prec (InfluxQuery q) =   runInflux (W.getWith o (queryUrl c)) Query success   where     success r = either (throwing _ParseError . BS8.pack)       pure $ r ^. W.responseBody . to A.eitherDecode -    o = basicInfluxOpts W.defaults c db+    o = basicInfluxOpts W.defaults c db prec       & W.param "q" .~ [Text.decodeUtf8 q]
src/Database/InfluxDB/Simple/Classy/Types.hs view
@@ -11,32 +11,39 @@   , HasInfluxDBConfig (..)   , InfluxDbError (..)   , AsInfluxDbError (..)+  , Precision (..)+  , AsPrecision (..)   , CanInflux   , basicInfluxOpts   , rqWinCode   ) where -import           Control.Exception      (SomeException)-import           Control.Lens           (makeClassy, makeClassyPrisms, (.~),-                                         (?~), (^.))-import           Control.Monad.Except   (MonadError)-import           Control.Monad.IO.Class (MonadIO)+import           Control.Exception                               (SomeException)+import           Control.Lens                                    (makeClassy, makeClassyPrisms,+                                                                  prism', re,+                                                                  (.~), (?~),+                                                                  (^.))+import           Control.Monad.Except                            (MonadError)+import           Control.Monad.IO.Class                          (MonadIO) -import           Data.ByteString        (ByteString)-import qualified Data.ByteString.Char8  as BS8+import           Data.ByteString                                 (ByteString)+import qualified Data.ByteString.Char8                           as BS8+import           Data.String                                     (IsString (..)) -import           Data.Function          ((&))+import           Data.Function                                   ((&)) -import           Data.Text              (Text)+import           Data.Text                                       (Text) -import           Data.Vector            (Vector)-import qualified Data.Vector            as V+import           Data.Vector                                     (Vector)+import qualified Data.Vector                                     as V -import           GHC.Word               (Word32)+import           GHC.Word                                        (Word32) -import           Network.Wreq           (Options)-import qualified Network.Wreq           as W+import           Network.Wreq                                    (Options)+import qualified Network.Wreq                                    as W +import           Database.InfluxDB.Simple.Classy.Types.Precision (AsPrecision (..),+                                                                  Precision (..)) -- | -- Used to differentiate what action we were trying to perform on the InfluxDB -- when an error occurred.@@ -111,9 +118,11 @@   => Options   -> InfluxDBConfig   -> a+  -> Precision   -> Options-basicInfluxOpts o env db = o+basicInfluxOpts o env db prec = o   & W.param "db" .~ [toDbName db]+  & W.param "precision" .~ [prec ^. re _Precision]   & W.auth ?~ W.basicAuth user' pass'   where     user' = env ^. idbUser
+ src/Database/InfluxDB/Simple/Classy/Types/Precision.hs view
@@ -0,0 +1,62 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE LambdaCase        #-}+{-# LANGUAGE RankNTypes        #-}+{-# LANGUAGE TemplateHaskell   #-}+module Database.InfluxDB.Simple.Classy.Types.Precision+  ( Precision (..)+  , AsPrecision (..)+  ) where++import           Control.Lens         (Lens', Prism', makeClassyPrisms, preview,+                                       prism', re, view, (^?))++import           Data.ByteString      (ByteString)+import           Data.ByteString.Lens (packedChars, unpackedChars)+import           Data.Text            (Text)+import           Data.Text.Lens       (packed, unpacked)++-- |+-- Precision of the timestamp in the writes or queries to Influx+--  [n,u,ms,s,m,h]+data Precision+  = Nanoseconds+  | Microseconds+  | Milliseconds+  | Seconds+  | Minutes+  | Hours+  deriving (Eq, Ord, Enum)+makeClassyPrisms ''Precision++instance AsPrecision String where+  _Precision = prism'+    (\case+      Nanoseconds  -> "n"+      Microseconds -> "u"+      Milliseconds -> "ms"+      Seconds      -> "s"+      Minutes      -> "m"+      Hours        -> "h"+    )+    (\case+       "n"  -> Just Nanoseconds+       "u"  -> Just Microseconds+       "ms" -> Just Milliseconds+       "s"  -> Just Seconds+       "m"  -> Just Minutes+       "h"  -> Just Hours+       _    -> Nothing+    )++{-# INLINABLE pris' #-}+pris' :: Lens' a String -> Lens' String a -> Prism' a Precision+pris' f t = prism' (view (re _Precision . t)) (preview (f . _Precision))++instance AsPrecision Text where+  _Precision = pris' unpacked packed++instance AsPrecision ByteString where+  _Precision = pris' unpackedChars packedChars++instance Show Precision where+  show = view (re _Precision)