package sihl

  1. Overview
  2. Docs

Use Database to handle connection pooling, migrations and to query your database.

val prepare_requests : string -> string -> string -> 'a Caqti_type.t -> (int, 'a, [ `Many | `One | `Zero ]) Caqti_request.t * (int, 'a, [ `Many | `One | `Zero ]) Caqti_request.t * (string * int, 'a, [ `Many | `One | `Zero ]) Caqti_request.t * (string * int, 'a, [ `Many | `One | `Zero ]) Caqti_request.t
val run_request : (module Caqti_lwt.CONNECTION) -> (('a, 'b, [< `Many | `One | `Zero ]) Caqti_request.t * ('a, 'b, [< `Many | `One | `Zero ]) Caqti_request.t * ('c * 'a, 'b, [< `Many | `One | `Zero ]) Caqti_request.t * ('c * 'a, 'b, [< `Many | `One | `Zero ]) Caqti_request.t) -> [< `Asc | `Desc ] -> 'c option -> 'a -> 'b list Lwt.t
val raise_error : ('a, Caqti_error.t) Result.t -> 'a

raise_error err raises a printable caqti error err .

fetch_pool () returns the connection pool that was set up. If there was no connection pool set up, setting it up now.

val query : (Caqti_lwt.connection -> 'a Lwt.t) -> 'a Lwt.t

query f runs the query f on the connection pool and returns the result. If the query fails the Lwt.t fails as well.

val query' : (Caqti_lwt.connection -> ('a, Caqti_error.t) Result.t Lwt.t) -> 'a Lwt.t

query' f runs the query f on the connection pool and returns the result. Use query' instead of query as a shorthand when you have a single caqti request to execute.

val transaction : (Caqti_lwt.connection -> 'a Lwt.t) -> 'a Lwt.t

transaction f runs the query f on the connection pool in a transaction and returns the result. If the query fails the Lwt.t fails as well and the transaction gets rolled back. If the database driver doesn't support transactions, transaction gracefully becomes query.

val transaction' : (Caqti_lwt.connection -> ('a, Caqti_error.t) Result.t Lwt.t) -> 'a Lwt.t

transaction' f runs the query f on the connection pool in a transaction and returns the result. If the query fails the Lwt.t fails as well and the transaction gets rolled back. If the database driver doesn't support transactions, transaction' gracefully becomes query'.

type config = {
  1. url : string;
  2. pool_size : int option;
}
val config : string -> int option -> config
val schema : (string, string -> int option -> config, config) Conformist.t
val used_database : unit -> Sihl__.Contract_database.database_type option
val start : unit -> unit Lwt.t
val stop : unit -> unit Lwt.t
val lifecycle : Sihl__.Core_container.lifecycle
val register : unit -> Sihl__.Core_container.Service.t
module Migration : sig ... end
OCaml

Innovation. Community. Security.