summaryrefslogtreecommitdiff
path: root/lib/router.ml
diff options
context:
space:
mode:
authorMateus Cruz <mateuscolvr@gmail.com>2024-02-05 11:06:46 -0300
committerMateus Cruz <mateuscolvr@gmail.com>2024-02-05 11:06:46 -0300
commit8878b1d92bdd8ee9b51ecde7e9cc88f62f264841 (patch)
tree46d6c47dfc820689baa552d97255adeda4c98b15 /lib/router.ml
parent5a2f5bf9a12b270e15757df48afeb1c1db5b34b3 (diff)
move routes handler module to its own file
Diffstat (limited to 'lib/router.ml')
-rw-r--r--lib/router.ml49
1 files changed, 2 insertions, 47 deletions
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
]
;;