package caqti

  1. Overview
  2. Docs

Internal: Library for Drivers

val linear_param_length : ?env:(string -> Caqti_query.t) -> Caqti_query.t -> int

linear_param_length templ is the number of linear parameters expected by a query represented by templ.

val linear_param_order : ?env:(string -> Caqti_query.t) -> Caqti_query.t -> int list list * (int * string) list

linear_param_order templ describes the parameter bindings expected for templ after linearizing parameters and lifting quoted strings out of the query:

  • The first is a list where item number i is a list of linear parameter positions to which to bind the ith incoming parameter.
  • The second is a list of pairs where the first component is the position of the linear parameter taking the place of a quoted string, and the second component is the quoted string to bind to this parameter.

All positions are zero-based.

val linear_query_string : ?env:(string -> Caqti_query.t) -> Caqti_query.t -> string

linear_query_string templ is templ where "?" is substituted for parameters and quoted strings.

type ('a, 'e) field_encoder = {
  1. write_value : 'b. uri:Uri.t -> 'b Caqti_type.Field.t -> 'b -> 'a -> ('a, 'e) Stdlib.result;
  2. write_null : 'b. uri:Uri.t -> 'b Caqti_type.Field.t -> 'a -> ('a, 'e) Stdlib.result;
} constraint 'e = [> `Encode_rejected of Caqti_error.coding_error ]
val encode_param : uri:Uri.t -> ('a, 'e) field_encoder -> 'b Caqti_type.t -> 'b -> 'a -> ('a, 'e) Stdlib.result
type ('a, 'e) field_decoder = {
  1. read_value : 'b. uri:Uri.t -> 'b Caqti_type.Field.t -> 'a -> ('b * 'a, 'e) Stdlib.result;
  2. skip_null : int -> 'a -> 'a option;
} constraint 'e = [> `Decode_rejected of Caqti_error.coding_error ]
val decode_row : uri:Uri.t -> ('a, 'e) field_decoder -> 'b Caqti_type.t -> 'a -> ('b * 'a, 'e) Stdlib.result