···1616/// Retrieves all members of a specific fire brigade from the database
1717/// and returns them as formatted JSON data.
1818pub fn handle_request(
1919- request req: wisp.Request,
1919+ request request: wisp.Request,
2020 ctx ctx: Context,
2121 id brigade_id: String,
2222) -> wisp.Response {
2323- use <- wisp.require_method(req, http.Get)
2323+ use <- wisp.require_method(request, http.Get)
24242525 let members_list_result = {
2626 use brigade_id <- result.try(
+16-8
src/app/routes/dashboard.gleam
···44import gleam/json
55import gleam/list
66import gleam/result
77+import pog
78import wisp
89910// TODO: Docs
···1617 let query_result = {
1718 use returned <- result.try(
1819 sql.get_dashboard_stats(ctx.conn)
1919- |> result.replace_error(DatabaseError),
2020+ |> result.map_error(DatabaseError),
2021 )
2122 use row <- result.try(
2223 list.first(returned.rows)
···3031 Ok(value) -> wisp.json_response(json.to_string(value), 200)
3132 Error(err) -> {
3233 case err {
3333- DatabaseError ->
3434- wisp.internal_server_error()
3535- |> wisp.set_body(wisp.Text(
3636- "Ocorreu um erro ao acessar o Banco de Dados",
3737- ))
3838- DatabaseReturnedEmptyRow ->
3434+ DatabaseReturnedEmptyRow -> {
3935 wisp.internal_server_error()
4036 |> wisp.set_body(wisp.Text("O Banco de dados não retornou resultados"))
3737+ }
3838+ DatabaseError(err) -> {
3939+ let err_message = case err {
4040+ pog.ConnectionUnavailable ->
4141+ "Conexão com o Banco de Dados não disponível"
4242+ pog.QueryTimeout -> "O Banco de Dados demorou muito para responder"
4343+ _ -> "Ocorreu um erro ao acessar o Banco de Dados"
4444+ }
4545+4646+ wisp.internal_server_error()
4747+ |> wisp.set_body(wisp.Text(err_message))
4848+ }
4149 }
4250 }
4351 }
···62706371pub type GetDashboardStatsError {
6472 DatabaseReturnedEmptyRow
6565- DatabaseError
7373+ DatabaseError(pog.QueryError)
6674}