From 8878b1d92bdd8ee9b51ecde7e9cc88f62f264841 Mon Sep 17 00:00:00 2001 From: Mateus Cruz Date: Mon, 5 Feb 2024 11:06:46 -0300 Subject: move routes handler module to its own file --- lib/router.ml | 49 ++----------------------------------------------- 1 file changed, 2 insertions(+), 47 deletions(-) (limited to 'lib/router.ml') diff --git a/lib/router.ml b/lib/router.ml index 35cef34..4572978 100644 --- a/lib/router.ml +++ b/lib/router.ml @@ -1,5 +1,3 @@ -[@@@warning "-26-27-32"] - open StdLabels open Routes open Piaf @@ -14,55 +12,12 @@ module R = Map.Make (struct ;; end) -module Handler = struct - let transaction client_id (db_pool : Query.pool) (request : Request.t) = - let client_opt = - Option.join @@ Result.to_option @@ Query.find_client client_id db_pool - in - match client_opt with - | Some client -> - let insert_result = - let body = Result.to_option @@ Body.to_string request.body in - let json = Option.map Yojson.Safe.from_string body in - let decoded_op = Option.bind json (Utils.Decoder.decode Operation.decoder) in - match decoded_op with - | Some op -> - (match Query.execute_operation ~client_id ~op db_pool with - | Ok _ as ok -> ok - | Error e -> Error (`DB e)) - | None -> Error (`Decoder "Invalid operation") - in - (match insert_result with - | Ok () -> - let json : Yojson.Safe.t = - `Assoc [ "limite", `Int 100000; "saldo", `Int (-9098) ] - in - Response.of_string ~body:(Yojson.Safe.to_string json) `OK - | Error _ -> Response.create (`Code 422)) - | None -> Response.create `Not_found - ;; - - let balance client_id (db_pool : Query.pool) (request : Request.t) = - let json : Yojson.Safe.t = - let balance = - let total = `Int (-9098) in - let date = `String "2024-01-17T02:34:41.217753Z" in - let limit = `Int 100000 in - `Assoc [ "total", total; "data_extrato", date; "limite", limit ] - in - let last_transactions = `List [] in - `Assoc [ "saldo", balance; "ultimas_transacoes", last_transactions ] - in - Response.of_string ~body:(Yojson.Safe.to_string json) `OK - ;; -end - let routes = List.fold_left ~f:(fun acc (v, r) -> R.add_to_list v r acc) ~init:R.empty - [ `GET, (s "clientes" / int / s "extrato" /? nil) @--> Handler.balance - ; `POST, (s "clientes" / int / s "transacoes" /? nil) @--> Handler.transaction + [ `GET, (s "clientes" / int / s "extrato" /? nil) @--> Handler.get_balance + ; `POST, (s "clientes" / int / s "transacoes" /? nil) @--> Handler.create_transaction ] ;; -- cgit v1.2.3