influxdb-0.5.0: Haskell client library for InfluxDB

Safe HaskellNone

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 ColumnSource

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 whereSource

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 ColumnSource

Column names. You can safely ignore the proxy agument.

toSeriesPoints :: a -> Vector ValueSource

Data points.

Decoding

class FromSeries a whereSource

A type that can be converted from a Series.

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

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

class FromSeriesData a whereSource

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 aSource

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

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

Helper function to define parseSeriesData from ValueParsers.

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

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 aSource

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.

data Credentials Source

User credentials.

Constructors

Credentials 

Fields

credsUser :: !Text
 
credsPassword :: !Text
 

Instances

rootCreds :: CredentialsSource

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

Instances

localServer :: ServerSource

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.

newtype Database Source

Constructors

Database 

Fields

databaseName :: Text
 

data User Source

User

Constructors

User 

Fields

userName :: Text
 
userIsAdmin :: Bool
 

Instances

newtype Admin Source

Administrator

Constructors

Admin 

Fields

adminName :: Text
 

Instances

newtype Ping Source

Constructors

Ping 

Fields

pingStatus :: Text
 

Instances

Writing Data

Updating Points

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

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

postWithPrecisionSource

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

writeSeriesSource

Arguments

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

Series name

-> a

Series data

-> SeriesT m () 

Write a single series data.

withSeriesSource

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

One Time Deletes

deleteSeriesSource

Arguments

:: Config 
-> Text

Database name

-> Text

Series name

-> IO () 

Regularly Scheduled Deletes (not implemented)

Querying Data

querySource

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.

queryChunkedSource

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.

dropDatabaseSource

Arguments

:: Config 
-> Text

Database name

-> IO () 

Drop a database. Requires cluster admin privileges.

Security

Cluster admin

listClusterAdmins :: Config -> IO [Admin]Source

List cluster administrators.

addClusterAdminSource

Arguments

:: Config 
-> Text

Admin name

-> Text

Password

-> IO Admin 

Add a new cluster administrator. Requires cluster admin privilege.

updateClusterAdminPasswordSource

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.

authenticateDatabaseUserSource

Arguments

:: Config 
-> Text

Database name

-> IO () 

addDatabaseUserSource

Arguments

:: Config 
-> Text

Database name

-> Text

User name

-> Text

Password

-> IO () 

Add an user to the database users.

updateDatabaseUserPasswordSource

Arguments

:: Config 
-> Text

Database name

-> Text

User name

-> Text

New password

-> IO () 

Update password for the database user.

deleteDatabaseUserSource

Arguments

:: Config 
-> Text

Database name

-> Text

User name

-> IO () 

Delete an user from the database users.

grantAdminPrivilegeToSource

Arguments

:: Config 
-> Text

Database name

-> Text

User name

-> IO () 

Give admin privilege to the user.

revokeAdminPrivilegeFromSource

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