Page
Library
Module
Module type
Parameter
Class
Class type
Source
Caqti_lwt.CONNECTIONThe connection API specialized for the current concurrency library.
include Caqti_connection_sig.Base with type 'a future := 'a Lwt.tmodule Response : Caqti_response_sig.S with type 'a future := 'a Lwt.tval call :
f:(('b, 'm) Response.t -> ('c, 'e) result Lwt.t) ->
('a, 'b, 'm) Caqti_request.t ->
'a ->
('c, [> Caqti_error.call ] as 'e) result Lwt.tcall ~f request params performs request with parameters params invoking f to process the result. The argument of f is only valid during the call to f, and must not be returned or operated on by other threads.
val start : unit -> (unit, [> Caqti_error.transact ]) result Lwt.tStarts a transaction if supported by the underlying database, otherwise does nothing.
val commit : unit -> (unit, [> Caqti_error.transact ]) result Lwt.tCommits the current transaction if supported by the underlying database, otherwise does nothing.
val rollback : unit -> (unit, [> Caqti_error.transact ]) result Lwt.tRolls back a transaction if supported by the underlying database, otherwise does nothing.
val disconnect : unit -> unit Lwt.tCalling disconnect () closes the connection to the database and frees up related resources.
val validate : unit -> bool Lwt.tFor internal use by Caqti_pool. Tries to ensure the validity of the connection and must return false if unsuccessful.
For internal use by Caqti_pool. Called after a connection has been used. check f must call f () exactly once with an argument indicating whether to keep the connection in the pool or discard it.
val driver_info : Caqti_driver_info.tInformation about the driver providing this connection module.
These are shortcuts for call combined with retrieval functions from Caqti_response_sig.S of the same name.
val exec :
('a, unit, [< `Zero ]) Caqti_request.t ->
'a ->
(unit, [> Caqti_error.call_or_retrieve ] as 'e) result Lwt.tCombining call with Response.exec, this sends a request to the database and checks that no rows are returned.
val find :
('a, 'b, [< `One ]) Caqti_request.t ->
'a ->
('b, [> Caqti_error.call_or_retrieve ] as 'e) result Lwt.tCombining call with Response.find, this sends a request to the database, checks that a single row is returned, and extracts it.
val find_opt :
('a, 'b, [< `Zero | `One ]) Caqti_request.t ->
'a ->
('b option, [> Caqti_error.call_or_retrieve ] as 'e) result Lwt.tCombining call with Response.find_opt, this sends a request to the database, checks that at most one row is returned, and extracts it if present.
val fold :
('a, 'b, [< `Zero | `One | `Many ]) Caqti_request.t ->
('b -> 'c -> 'c) ->
'a ->
'c ->
('c, [> Caqti_error.call_or_retrieve ] as 'e) result Lwt.tCombining call with Response.fold, this sends a request to the database and folds over the result rows.
val fold_s :
('a, 'b, [< `Zero | `One | `Many ]) Caqti_request.t ->
('b -> 'c -> ('c, 'e) result Lwt.t) ->
'a ->
'c ->
('c, [> Caqti_error.call_or_retrieve ] as 'e) result Lwt.tCombining call with Response.fold_s, this sends a request to the database and folds concurrently over the result rows.
Please be aware of possible deadlocks when using resources from the callback. In particular, if the same connection pool is invoked as the one used to obtain the current connection, it will deadlock if the pool has just run out of connections. An alternative is to collect the rows first e.g. with fold and do the nested queries after exiting.
val iter_s :
('a, 'b, [< `Zero | `One | `Many ]) Caqti_request.t ->
('b -> (unit, 'e) result Lwt.t) ->
'a ->
(unit, [> Caqti_error.call_or_retrieve ] as 'e) result Lwt.tCombining call with Response.iter_s, this sends a request to the database and iterates concurrently over the result rows. Please see the warning in fold_s about resource usage in the callback.
val collect_list :
('a, 'b, [< `Zero | `One | `Many ]) Caqti_request.t ->
'a ->
('b list, [> Caqti_error.call_or_retrieve ] as 'e) result Lwt.tcollect_list request param performs a call on request, extracting the result as a list.
val rev_collect_list :
('a, 'b, [< `Zero | `One | `Many ]) Caqti_request.t ->
'a ->
('b list, [> Caqti_error.call_or_retrieve ] as 'e) result Lwt.trev_collect_list request param performs a call on request, extracting the result as a reversed list. This is more efficient than find_list and fits well with a subsequent List.rev_map, though it may not matter much in practise.