diff options
Diffstat (limited to 'src/request.gleam')
| -rw-r--r-- | src/request.gleam | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/src/request.gleam b/src/request.gleam index b6bd969..08dbf8d 100644 --- a/src/request.gleam +++ b/src/request.gleam @@ -20,32 +20,37 @@ pub fn handle(request, connection) { case wisp.path_segments(request) { ["heart-beat"] -> wisp.html_response(string_builder.from_string("alive"), 200) - ["get", "@" <> name] -> - wisp.ok() - |> wisp.set_header("Content-Type", "image/svg+xml") - |> wisp.string_body(svg.xml( - case wisp.get_query(request) { - [#("theme", theme)] -> theme - _ -> "asoul" - }, - database.get_counter(connection, name).num, - )) + ["get", "@" <> name] -> { + case database.get_counter(connection, name) { + Ok(counter) -> { + wisp.ok() + |> wisp.set_header("Content-Type", "image/svg+xml") + |> wisp.string_body(svg.xml( + case wisp.get_query(request) { + [#("theme", theme)] -> theme + _ -> "asoul" + }, + counter.num, + )) + } + Error(_) -> wisp.unprocessable_entity() + } + } ["record", "@" <> name] -> { - let counter = database.get_counter(connection, name) - - case - Ok( - json.to_string_builder( - json.object([ - #("name", json.string(counter.name)), - #("num", json.int(counter.num)), - #("updated_at", json.string(counter.updated_at)), - #("created_at", json.string(counter.created_at)), - ]), - ), - ) - { - Ok(builder) -> wisp.json_response(builder, 200) + case database.get_counter(connection, name) { + Ok(counter) -> { + wisp.json_response( + json.to_string_builder( + json.object([ + #("name", json.string(counter.name)), + #("num", json.int(counter.num)), + #("updated_at", json.string(counter.updated_at)), + #("created_at", json.string(counter.created_at)), + ]), + ), + 200, + ) + } Error(_) -> wisp.unprocessable_entity() } } |