ppx_rapper

Syntax extension for Caqti/PostgreSQL queries
Library ppx_rapper.runtime
type ('b, +'m) t

The type describing the response and containing returned data from a request execution.

  • 'b is the type of a single row
  • 'm is the possible multiplicities of rows

Result inspection

val returned_count : ( 'b, 'm ) t -> ( int, [> Caqti_error.retrieve | `Unsupported ] ) result Io.t

returned_count resp is the number of rows returned by resp. This function may not be available for all databases.

val affected_count : ( 'b, 'm ) t -> ( int, [> Caqti_error.retrieve ] ) result Io.t

affected_count resp is the number of rows affected by the updated the produced resp.

Result retrieval

val exec : ( unit, [< `Zero ] ) t -> ( unit, [> Caqti_error.retrieve ] ) result Io.t

exec resp checks that resp succeeded with no result rows.

val find : ( 'b, [< `One ] ) t -> ( 'b, [> Caqti_error.retrieve ] ) result Io.t

find resp checks that resp succeeded with a single row, and returns the decoded row.

val find_opt : ( 'b, [< `Zero | `One ] ) t -> ( 'b option, [> Caqti_error.retrieve ] ) result Io.t

find_opt resp checks that resp succeeded with at most one row, and returns the row if any.

val fold : ( 'b -> 'c -> 'c ) -> ( 'b, 'm ) t -> 'c -> ( 'c, [> Caqti_error.retrieve ] ) result Io.t

fold f resp folds f over the decoded rows returned in resp.

val fold_s : ( 'b -> 'c -> ( 'c, 'e ) result Io.t ) -> ( 'b, 'm ) t -> 'c -> ( 'c, [> Caqti_error.retrieve ] as 'e ) result Io.t

fold_s f resp folds f over the decoded rows returned by resp within the IO and result monad.

Note. Do not make nested queries in the callback to this function. If you use the same connection, it may lead to data corruption. If you pull a different connection from the same pool, it may deadlock if the pool runs out of connections. Also, some drivers may not support simpltaneous connections.

val iter_s : ( 'b -> ( unit, 'e ) result Io.t ) -> ( 'b, 'm ) t -> ( unit, [> Caqti_error.retrieve ] as 'e ) result Io.t

iter_s f resp iterates f over the decoded rows returned by resp within the IO and result monad.

Note. Do not make nested queries in the callback to this function. Cf. fold_s.

val to_stream : ( 'b, 'm ) t -> ( 'b, [> Caqti_error.retrieve ] as 'err ) Stream.t

to_stream resp returns a stream whose elements are the decoded rows returned by resp.