Safe Haskell | None |
---|---|
Language | Haskell2010 |
- newtype Query = Query Text
- data Server = Server {}
- defaultServer :: Server
- host :: Lens' Server Text
- port :: Lens' Server Int
- ssl :: Lens' Server Bool
- data Credentials = Credentials {}
- credentials :: Text -> Text -> Credentials
- user :: Lens' Credentials Text
- password :: Lens' Credentials Text
- newtype Database = Database {
- databaseName :: Text
- newtype Key = Key Text
- fromNonEmptyString :: String -> String -> Text
- data Nullability
- type QueryField = Field Nullable
- type LineField = Field NonNullable
- data Field (n :: Nullability) where
- data RequestType
- data Precision (ty :: RequestType) where
- Nanosecond :: Precision ty
- Microsecond :: Precision ty
- Millisecond :: Precision ty
- Second :: Precision ty
- Minute :: Precision ty
- Hour :: Precision ty
- RFC3339 :: Precision QueryRequest
- precisionName :: Precision ty -> Text
- class Timestamp time where
- roundAt :: RealFrac a => a -> a -> a
- precisionScale :: Fractional a => Precision ty -> a
- data InfluxException
- class HasServer a where
- class HasDatabase a where
- class HasPrecision (ty :: RequestType) a | a -> ty where
- class HasManager a where
- class HasCredentials a where
Documentation
>>>
:set -XOverloadedStrings
>>>
import Database.InfluxDB
An InfluxDB query.
A spec of the format is available at https://docs.influxdata.com/influxdb/v1.2/query_language/spec/.
A Query
can be constructed using either
- the
IsString
instance with-XOverloadedStrings
- or
formatQuery
.
>>>
:set -XOverloadedStrings
>>>
"SELECT * FROM series" :: Query
"SELECT * FROM series">>>
import qualified Database.InfluxDB.Format as F
>>>
formatQuery ("SELECT * FROM "%F.key) "series"
"SELECT * FROM \"series\""
NOTE: Currently this library doesn't support type-safe query construction.
:: Text | User name |
-> Text | Password |
-> Credentials |
user :: Lens' Credentials Text Source #
User name to access InfluxDB.
>>>
let creds = credentials "john" "passw0rd"
>>>
creds ^. user
"john"
Database name.
formatDatabase
can be used to construct a
Database
.
String type that is used for measurements, tag keys and field keys.
type QueryField = Field Nullable Source #
Field type for queries. Queries can contain null values.
type LineField = Field NonNullable Source #
Field type for the line protocol. The line protocol doesn't accept null values.
data Field (n :: Nullability) where Source #
data RequestType Source #
Type of a request
QueryRequest | Request for |
WriteRequest | Request for |
data Precision (ty :: RequestType) where Source #
Predefined set of time precision.
RFC3339
is only available for QueryRequest
s.
Nanosecond :: Precision ty | POSIX time in ns |
Microsecond :: Precision ty | POSIX time in μs |
Millisecond :: Precision ty | POSIX time in ms |
Second :: Precision ty | POSIX time in s |
Minute :: Precision ty | POSIX time in minutes |
Hour :: Precision ty | POSIX time in hours |
RFC3339 :: Precision QueryRequest | Nanosecond precision time in a human readable format, like
|
precisionName :: Precision ty -> Text Source #
Name of the time precision.
>>>
precisionName Nanosecond
"n"
class Timestamp time where Source #
A Timestamp
is something that can be converted to a valid
InfluxDB timestamp, which is represented as a 64-bit integer.
precisionScale :: Fractional a => Precision ty -> a Source #
Scale of the type precision.
>>>
precisionScale RFC3339
1.0e-9>>>
precisionScale Microsecond
1.0e-6
data InfluxException Source #
Exceptions used in this library.
In general, the library tries to convert exceptions from the dependent libraries to the following types of errors.
ServerError String | Server side error. You can expect to get a successful response once the issue is resolved on the server side. |
ClientError String Request | Client side error. You need to fix your query to get a successful response. |
UnexpectedResponse String ByteString | Received an unexpected response. The This can happen e.g. when the response from InfluxDB is incompatible with what this library expects due to an upstream format change etc. |
HTTPException HttpException | HTTP communication error. Typical HTTP errors (4xx and 5xx) are covered by |
class HasServer a where Source #
HasServer PingParams Source # |
|
HasServer QueryParams Source # |
|
HasServer WriteParams Source # |
|
class HasDatabase a where Source #
HasDatabase QueryParams Source # |
|
HasDatabase ShowQuery Source # | > v <- query (queryParams "_internal") "SHOW QUERIES" :: IO (V.Vector ShowQuery) > v ^.. each.database ["_internal"] |
HasDatabase WriteParams Source # |
|
class HasPrecision (ty :: RequestType) a | a -> ty where Source #
HasPrecision QueryRequest QueryParams Source # | Returning JSON responses contain timestamps in the specified precision/format.
|
HasPrecision WriteRequest WriteParams Source # |
|
HasPrecision WriteRequest WriteParams Source # | Timestamp precision. In the UDP API, all timestamps are sent in nanosecond but you can specify lower precision. The writer just rounds timestamps to the specified precision. |
class HasManager a where Source #
manager :: Lens' a (Either ManagerSettings Manager) Source #
HTTP manager settings or a manager itself.
If it's set to ManagerSettings
, the library will create a Manager
from
the settings for you.
HasManager PingParams Source # |
|
HasManager QueryParams Source # |
|
HasManager WriteParams Source # |
|
class HasCredentials a where Source #
authentication :: Lens' a (Maybe Credentials) Source #
User name and password to be used when sending requests to InfluxDB.
HasCredentials QueryParams Source # | Authentication info for the query
|
HasCredentials WriteParams Source # | Authentication info for the write
|