influxdb-0.7.1.1: Haskell client library for InfluxDB

Safe HaskellNone
LanguageHaskell2010

Database.InfluxDB

Contents

Synopsis

Series data types

data Series Source

A series consists of name, columns and points. The columns and points are expressed in a separate type SeriesData.

Constructors

Series 

Fields

seriesName :: !Text

Series name

seriesData :: !SeriesData

Columns and data points in the series

seriesColumns :: Series -> Vector Column Source

Convenient accessor for columns.

seriesPoints :: Series -> [Vector Value] Source

Convenient accessor for points.

data Value Source

An InfluxDB value represented as a Haskell value.

Constructors

Int !Int64 
Float !Double 
String !Text 
Bool !Bool 
Null 

Encoding

class ToSeriesData a where Source

A type that can be converted to a SeriesData. A typical implementation is as follows.

import qualified Data.Vector as V

data Event = Event Text EventType
data EventType = Login | Logout

instance ToSeriesData Event where
  toSeriesColumn _ = V.fromList ["user", "type"]
  toSeriesPoints (Event user ty) = V.fromList [toValue user, toValue ty]

instance ToValue EventType

Methods

toSeriesColumns :: Proxy a -> Vector Column Source

Column names. You can safely ignore the proxy agument.

toSeriesPoints :: a -> Vector Value Source

Data points.

Decoding

class FromSeries a where Source

A type that can be converted from a Series.

fromSeries :: FromSeries a => Series -> Either String a Source

Converte a value from a Series, failing if the types do not match.

class FromSeriesData a where Source

A type that can be converted from a SeriesData. A typical implementation is as follows.

import Control.Applicative ((<$>), (<*>))
import qualified Data.Vector as V

data Event = Event Text EventType
data EventType = Login | Logout

instance FromSeriesData Event where
  parseSeriesData = withValues $ \values -> Event
    <$> values .: "user"
    <*> values .: "type"

instance FromValue EventType

fromSeriesData :: FromSeriesData a => SeriesData -> Either String [a] Source

Converte a value from a SeriesData, failing if the types do not match.

fromValue :: FromValue a => Value -> Either String a Source

Converte a value from a Value, failing if the types do not match.

withValues :: (Vector Value -> ValueParser a) -> Vector Column -> Vector Value -> Parser a Source

Helper function to define parseSeriesData from ValueParsers.

(.:) :: FromValue a => Vector Value -> Column -> ValueParser a Source

Retrieve the value associated with the given column. The result is empty if the column is not present or the value cannot be converted to the desired type.

(.:?) :: FromValue a => Vector Value -> Column -> ValueParser (Maybe a) Source

Retrieve the value associated with the given column. The result is Nothing if the column is not present or the value cannot be converted to the desired type.

(.!=) :: Parser (Maybe a) -> a -> Parser a Source

Helper for use in combination with .:? to provide default values for optional columns.

HTTP API

Data types

data Config Source

Configurations for HTTP API client.

Constructors

Config 

data Credentials Source

User credentials.

Constructors

Credentials 

Fields

credsUser :: !Text
 
credsPassword :: !Text
 

rootCreds :: Credentials Source

Default credentials.

data Server Source

Server location.

Constructors

Server 

Fields

serverHost :: !Text

Hostname or IP address

serverPort :: !Int
 
serverSsl :: !Bool

SSL is enabled or not in the server side

localServer :: Server Source

Default server location.

data ServerPool Source

Non-empty set of server locations. The active server will always be used until any HTTP communications fail.

newServerPool :: Server -> [Server] -> IO (IORef ServerPool) Source

Create a non-empty server pool. You must specify at least one server location to create a pool.

newServerPoolWithRetrySettings :: RetryPolicy -> Server -> [Server] -> IO (IORef ServerPool) Source

Deprecated: Use newServerPoolWithRetryPolicy instead

data User Source

User

Constructors

User 

Fields

userName :: Text
 
userIsAdmin :: Bool
 

newtype Admin Source

Administrator

Constructors

Admin 

Fields

adminName :: Text
 

newtype Ping Source

Constructors

Ping 

Fields

pingStatus :: Text
 

Exception

Writing Data

Updating Points

post :: Config -> Text -> SeriesT IO a -> IO a Source

Post a bunch of writes for (possibly multiple) series into a database.

postWithPrecision Source

Arguments

:: Config 
-> Text

Database name

-> TimePrecision 
-> SeriesT IO a 
-> IO a 

Post a bunch of writes for (possibly multiple) series into a database like post but with time precision.

data SeriesT m a Source

Monad transformer to batch up multiple writes of series to speed up insertions.

data PointT p m a Source

Monad transformer to batch up multiple writes of points to speed up insertions.

Instances

writeSeries Source

Arguments

:: (Monad m, ToSeriesData a) 
=> Text

Series name

-> a

Series data

-> SeriesT m () 

Write a single series data.

withSeries Source

Arguments

:: forall m a . (Monad m, ToSeriesData a) 
=> Text

Series name

-> PointT a m () 
-> SeriesT m () 

Write a bunch of data for a single series. Columns for the points don't need to be specified because they can be inferred from the type of a.

writePoints :: (Monad m, ToSeriesData a) => a -> PointT a m () Source

Write a data into a series.

Deleting Points

deleteSeries Source

Arguments

:: Config 
-> Text

Database name

-> Text

Series name

-> IO () 

Querying Data

query Source

Arguments

:: FromSeries a 
=> Config 
-> Text

Database name

-> Text

Query text

-> IO [a] 

Query a specified database.

The query format is specified in the InfluxDB Query Language.

data Stream m a Source

Effectful stream

Constructors

Yield a (m (Stream m a))

Yield a value. The stream will be continued.

Done

The end of the stream.

queryChunked Source

Arguments

:: FromSeries a 
=> Config 
-> Text

Database name

-> Text

Query text

-> (Stream IO a -> IO b)

Action to handle the resulting stream of series

-> IO b 

Query a specified database like query but in a streaming fashion.

Administration & Security

Creating and Dropping Databases

listDatabases :: Config -> IO [Database] Source

List existing databases.

createDatabase :: Config -> Text -> IO () Source

Create a new database. Requires cluster admin privileges.

dropDatabase Source

Arguments

:: Config 
-> Text

Database name

-> IO () 

Drop a database. Requires cluster admin privileges.

configureDatabase Source

Arguments

:: Config 
-> Text

Database name

-> DatabaseRequest 
-> IO () 

Security

Shard spaces

listShardSpaces :: Config -> IO [ShardSpace] Source

List shard spaces.

createShardSpace Source

Arguments

:: Config 
-> Text

Database

-> ShardSpaceRequest 
-> IO () 

Create a shard space.

dropShardSpace Source

Arguments

:: Config 
-> Text

Database name

-> Text

Shard space name

-> IO () 

Cluster admin

listClusterAdmins :: Config -> IO [Admin] Source

List cluster administrators.

addClusterAdmin Source

Arguments

:: Config 
-> Text

Admin name

-> Text

Password

-> IO Admin 

Add a new cluster administrator. Requires cluster admin privilege.

updateClusterAdminPassword Source

Arguments

:: Config 
-> Admin 
-> Text

New password

-> IO () 

Update a cluster administrator's password. Requires cluster admin privilege.

deleteClusterAdmin :: Config -> Admin -> IO () Source

Delete a cluster administrator. Requires cluster admin privilege.

Database user

listDatabaseUsers :: Config -> Text -> IO [User] Source

List database users.

authenticateDatabaseUser Source

Arguments

:: Config 
-> Text

Database name

-> IO () 

addDatabaseUser Source

Arguments

:: Config 
-> Text

Database name

-> Text

User name

-> Text

Password

-> IO () 

Add an user to the database users.

updateDatabaseUserPassword Source

Arguments

:: Config 
-> Text

Database name

-> Text

User name

-> Text

New password

-> IO () 

Update password for the database user.

deleteDatabaseUser Source

Arguments

:: Config 
-> Text

Database name

-> Text

User name

-> IO () 

Delete an user from the database users.

grantAdminPrivilegeTo Source

Arguments

:: Config 
-> Text

Database name

-> Text

User name

-> IO () 

Give admin privilege to the user.

revokeAdminPrivilegeFrom Source

Arguments

:: Config 
-> Text

Database name

-> Text

User name

-> IO () 

Remove admin privilege from the user.

Other API

listInterfaces :: Config -> IO [Text] Source

Fetch current list of available interfaces