Haskell client driver for RethinkDB
It differs from the other driver (rethinkdb) in that it uses advanced Haskell magic to properly type the terms, queries and responses.
Structure and usage
The library exposes a single module,
Database.RethinkDB. There should be
very little which can conflict with other code, so you should be able to
import it unqualified.
To be able to run expressions on the server, you first have to create
a handle, this you can do with
newHandle. Currently it always connects to
"localhost" and the default RethinkDB client driver port.
Expressions have the type
Exp a, where the
a denotes the result you would
get when you run the expression. You can use
lift to lift many basic Haskell
types (Double, Text, Bool) and certain functions (unary and binary) into
RethinkDB uses JSON for encoding on the protocol level, but certain types (eg.
time) have non-standard encoding. This is why the driver uses a separate type
ToRSON) to describe types which can be sent over the
Add two numbers, one and two. Here we lift the addition function and its
Exp, and then use
call2 to call it.
h <- newHandle res <- run h $ call2 (lift (+)) (lift 1) (lift 2) print res -- Should print 'Right 3.0'
Get all objects in a table.
h <- newHandle Right sequence <- run h $ Table "test" objs <- collect h sequence -- objs is now a 'Vector' of all objects in the test table.