tempodb 0.2.2.2 → 0.2.2.3
raw patch · 5 files changed
+25/−20 lines, 5 filesdep ~aeson
Dependency ranges changed: aeson
Files
- DEBT +1/−0
- src/Database/Tempodb/Methods/Read.hs +3/−2
- src/Database/Tempodb/Methods/Write.hs +4/−3
- src/Database/Tempodb/Types.hs +15/−13
- tempodb.cabal +2/−2
DEBT view
@@ -10,3 +10,4 @@ and I'm repeating the same where functions in many different functions (which is bad!). 3. [ ] Hackage docs! I haven't written anything. Naughty me.+4. [ ] Make Data polymorphic over the value type for any Num (how?).
src/Database/Tempodb/Methods/Read.hs view
@@ -10,13 +10,14 @@ import Data.Aeson as A import Data.ByteString.Char8 as C8 import Data.ByteString.Lazy (fromStrict)+import Data.Int import Data.Monoid import Database.Tempodb.Types import Database.Tempodb.Util import Network.HTTP.Base (urlEncodeVars) import Network.Http.Client -readOne :: IdOrKey -> Maybe QueryArgs -> Tempodb (Maybe SeriesData)+readOne :: IdOrKey -> Maybe QueryArgs -> Tempodb (Maybe (SeriesData Int64)) readOne q qa = do auth <- ask req <- liftIO . buildRequest $ do@@ -36,7 +37,7 @@ Nothing -> mempty Just qry -> "?" <> (C8.pack $ urlEncodeVars qry) -readMulti :: Maybe QueryArgs -> Tempodb (Maybe [SeriesData])+readMulti :: Maybe QueryArgs -> Tempodb (Maybe [SeriesData Int64]) readMulti q = do auth <- ask req <- liftIO . buildRequest $ do
src/Database/Tempodb/Methods/Write.hs view
@@ -11,12 +11,13 @@ import Data.Aeson as A import Data.ByteString.Char8 as C8 import Data.ByteString.Lazy (fromStrict, toStrict)+import Data.Int import Data.Monoid import Database.Tempodb.Types as T import Database.Tempodb.Util import Network.Http.Client -writeOne :: IdOrKey -> Data -> Tempodb Bool+writeOne :: IdOrKey -> Data Int64 -> Tempodb Bool writeOne q d = do let postdata = toStrict $ A.encode d auth <- ask@@ -34,7 +35,7 @@ ident (T.SeriesKey k) = "/key/" <> k path = rootpath <> "/series" <> (ident q) -writeBulk :: Bulk -> Tempodb Bool+writeBulk :: Bulk Int64 -> Tempodb Bool writeBulk d = do let postData = toStrict $ A.encode d auth <- ask@@ -47,7 +48,7 @@ return True -writeMulti :: [Data] -> T.Tempodb (Either (Maybe [Data]) Bool)+writeMulti :: [Data Int64] -> T.Tempodb (Either (Maybe [Data Int64]) Bool) writeMulti d = do let postData = toStrict $ A.encode d auth <- ask
src/Database/Tempodb/Types.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings #-} @@ -11,6 +12,7 @@ import Data.Aeson.Types import qualified Data.ByteString as B import Data.ByteString.Char8 as C8+import Data.Int import Data.Map (Map) import qualified Data.Text as T import Data.Text.Encoding (decodeUtf8, encodeUtf8)@@ -82,15 +84,15 @@ parseJSON = withText "ByteString" $ pure . encodeUtf8 {-# INLINE parseJSON #-} -data Data = Data+data Num a => Data a = Data { uid :: Maybe IdOrKey , timestamp :: Maybe TempoDBTime- , value :: Double+ , value :: a } deriving (Show, Eq, Ord) -data Bulk = Bulk+data Bulk a = Bulk { timestmp :: TempoDBTime- , bulkValues :: [Data]+ , bulkValues :: [Data a] } deriving (Show, Eq, Ord) data Rollup = Rollup@@ -109,16 +111,16 @@ , count :: Int } deriving (Show, Eq, Ord) -data SeriesData = SeriesData+data SeriesData a = SeriesData { series :: Series , start :: TempoDBTime , end :: TempoDBTime- , values :: [Data]+ , values :: [Data a] , rollup :: Maybe Rollup , summary :: Summary } deriving (Show, Eq, Ord) -instance FromJSON SeriesData where+instance FromJSON (SeriesData Int64) where parseJSON (Object o) = SeriesData <$> o .: "series" <*> o .: "start" <*>@@ -129,13 +131,13 @@ parseJSON _ = mzero -instance FromJSON Bulk where+instance FromJSON (Bulk Int64) where parseJSON (Object o) = Bulk <$> o .: "t" <*> o .: "data" parseJSON _ = mzero -instance ToJSON Bulk where+instance ToJSON (Bulk Int64) where toJSON (Bulk t v) = object [ "t" .= t , "data" .= v@@ -173,10 +175,10 @@ Nothing -> mzero parseJSON _ = mzero -instance FromJSON Data where+instance FromJSON (Data Int64) where parseJSON = parseSeriesData -parseSeriesData :: Value -> Parser Data+parseSeriesData :: Value -> Parser (Data Int64) parseSeriesData v = do case v of Object o -> do@@ -194,10 +196,10 @@ Nothing -> return Nothing Just idkey -> return . Just $ SeriesKey idkey -instance ToJSON Data where+instance ToJSON (Data Int64) where toJSON = buildSeriesData -buildSeriesData :: Data -> Value+buildSeriesData :: (Data Int64) -> Value buildSeriesData (Data i t v) = object . ts . eid $ ["v" .= v] where ts l = case t of
tempodb.cabal view
@@ -1,5 +1,5 @@ name: tempodb-version: 0.2.2.2+version: 0.2.2.3 synopsis: A small Haskell wrapper around the TempoDB api. description: TempoDB is a time-series database as-a-service with a@@ -35,7 +35,7 @@ HTTP >= 4000.2.9 && < 4000.2.12, HsOpenSSL >= 0.10.4 && < 0.11, bytestring >= 0.9.1 && < 0.11,- aeson >= 0.7.0.1 && < 0.7.0.2,+ aeson >= 0.7.0.1 && < 0.7.1, io-streams >= 1.1.2.0 && < 1.2, blaze-builder >= 0.3.3.0 && < 0.4, containers >= 0.5.5.0 && < 0.6,