package caqti

  1. Overview
  2. Docs

Blocking API based on the Unix module.

Warning: This module is not well tested. Please report any issues.

This module implements a blocking API. It is not designed for preemptive threading. That is, connections and connection pools must be created and used within a single thread, and any limitation on multithreading from the driver or client library applies.

You can use a connection pool to cache a single DB connection, additional connections will not be allocated, since usage is serial.

include Caqti_connect_sig.S with type 'a future = 'a
type 'a future = 'a

The type of a deferred value of type 'a.

module Pool : Caqti_pool_sig.S with type 'a future := 'a future

A pool implementation for the current concurrency library.

module Stream : Caqti_stream.S with type 'a future := 'a future
module type CONNECTION = Caqti_connection_sig.S with type 'a future := 'a future and type ('a, 'err) stream := ('a, 'err) Stream.t

The connection API specialized for the current concurrency library.

type connection = (module CONNECTION)

Shortcut for the connection API passed as a value.

val connect : Uri.t -> (connection, [> Caqti_error.load_or_connect ]) Stdlib.result future

connect uri locates and loads a driver which can handle uri, passes uri to the driver, which establish a connection and returns a first-class module implementing Caqti_connection_sig.S.

val connect_pool : ?max_size:int -> Uri.t -> ((connection, [> Caqti_error.connect ]) Pool.t, [> Caqti_error.load ]) Stdlib.result

connect_pool uri is a pool of database connections constructed by connect uri.

val or_fail : ('a, [< Caqti_error.t ]) Stdlib.result -> 'a

Takes Ok x to x and raises Caqti_error.Exnerr on Error err.