From 5a2f5bf9a12b270e15757df48afeb1c1db5b34b3 Mon Sep 17 00:00:00 2001 From: Mateus Cruz Date: Mon, 5 Feb 2024 03:31:35 -0300 Subject: add db queries --- lib/query.ml | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/query.ml (limited to 'lib/query.ml') diff --git a/lib/query.ml b/lib/query.ml new file mode 100644 index 0000000..0fb6f7e --- /dev/null +++ b/lib/query.ml @@ -0,0 +1,37 @@ +type pool = ((module Rapper_helper.CONNECTION), Caqti_error.t) Caqti_eio.Pool.t + +let transaction_query = + [%rapper + execute + {sql| + INSERT INTO transactions (client_id, value, type, description) + VALUES (%int{client_id}, %int{value}, %Operation.TransactionType{transaction_type}, %string{description}) + |sql}] +;; + +let client_query = + let open Client in + [%rapper + get_opt + {sql| + SELECT @int{id}, @int{mov_limit} FROM clients WHERE id = %int{id} + |sql} + record_out] +;; + +let execute_operation ~client_id ~(op : Operation.t) pool = + match op with + | Transaction data -> + Caqti_eio.Pool.use + (fun conn -> + transaction_query + ~client_id + ~value:data.value + ~transaction_type:data.transaction_type + ~description:data.description + conn) + pool + | _ -> failwith "TODO" +;; + +let find_client id pool = Caqti_eio.Pool.use (fun conn -> client_query ~id conn) pool -- cgit v1.2.3