Pgx_async - Pgx using Async for IO
Module Pgx_async

Async based Postgres client based on Pgx.

include Pgx.S with type 'a monad = 'a Async.Deferred.t
type t
type 'a monad = 'a Async.Deferred.t
val connect : ?host:string -> ?port:int -> ?user:string -> ?password:string -> ?database:string -> ?unix_domain_socket_dir:string -> ?verbose:int -> ?max_message_length:int -> unit -> t monad

Connect to the database. The normal $PGDATABASE, etc. environment variables are available.

max_message_length is the maximum message length accepted from the back-end. The default is Sys.max_string_length, which means that we will try to read as much data from the back-end as we can, and this may cause us to run out of memory (particularly on 64 bit machines), causing a possible denial of service. You may want to set this to a smaller size to avoid this happening.

val close : t -> unit monad

Close the database handle. You must call this after you have finished with the handle, or else you will get leaked file descriptors.

val ping : t -> unit monad

Ping the database. If the database is not available, some sort of exception will be thrown.

val alive : t -> bool monad

This function is a wrapper of ping that returns a boolean instead of raising an exception.

val begin_work : ?isolation:Pgx.Isolation.t -> ?access:Pgx.Access.t -> ?deferrable:bool -> t -> t monad

Start a transaction.

val commit : t -> unit monad

Commit a transaction. Throws an exception if no transaction is open. Use with_transaction when possible.

val rollback : t -> unit monad

Rollback a transaction. Throws an exception if no transaction is open. Use with_transaction when possible.

val with_transaction : ?isolation:Pgx.Isolation.t -> ?access:Pgx.Access.t -> ?deferrable:bool -> t -> ( t -> 'b monad ) -> 'b monad

with_transaction db ?isolation ?access ?deferrable f wraps your function f inside a transactional block. See begin_work for a description of isolation, access, and deferrable. If f throws an exception, the transaction will be rolled back. Otherwise the transaction will be commited. It is an error to call commit or rollback manually inside of this function.

module Prepared : sig ... end
val execute : ?params:Pgx.row -> t -> string -> Pgx.row list monad

execute conn ?params query prepares and executes the statement query and returns the result.

val execute_fold : ?params:Pgx.param list -> t -> string -> init:'accum -> f:( 'accum -> Pgx.row -> 'accum monad ) -> 'accum monad
val execute_iter : ?params:Pgx.param list -> t -> string -> f:( Pgx.row -> unit monad ) -> unit monad
val execute_many : t -> query:string -> params:Pgx.param list list -> Pgx.row list list monad

Prepares a query as in execute and then executes it once per set of parameters in params. This is more efficient than calling execute in a loop because the query is only prepared once.

val simple_query : t -> string -> Pgx.row list list monad

simple_query conn query executes the command(s) in the given query and returns a list of query results (i.e. if you run two queries, you will get a list with two elements: the results of the first query followed by the results of the second query.

module Thread : Pgx.IO with type 'a t = 'a Async.Deferred.t
val with_conn : ?host:string -> ?port:int -> ?user:string -> ?password:string -> ?database:string -> ?unix_domain_socket_dir:string -> ?verbose:int -> ?max_message_length:int -> ( t -> 'a Async.Deferred.t ) -> 'a Async.Deferred.t
module Value : sig ... end