Commit Graph

7 Commits

Author SHA1 Message Date
3ca0514b7a Add missing docstrings / comments 2026-01-31 13:43:00 +01:00
3f561ab70e Create a config map
For now, the config contains:
- database "credentials" (safe to commit, it's just the name of the
  sqlite file)
- port on which the HTTP server will listen
2026-01-31 13:43:00 +01:00
78948fd017 Add GET /item/:id endpoint
This new endpoint was so easy to add, it would have been a shame not to
do it. Besides, it makes sense since the reponse from `POST /items`
provided a `Location` header for the newly created item.
2026-01-31 13:43:00 +01:00
eded366570 Persist items to the database
The database that was chosen here is SQLite, because it's dead simple to
setup and more than enough for this project.

Please note that I took some liberty with the assignment. I chose to use
a numeric field for the `id` column of an item. This leverages automatic
creation and incrementation of the id by SQLite itself.
2026-01-31 13:42:57 +01:00
da6f8b4519 Add input validation
Input validation uses Malli coercion. Sadly enough, email is validated
with a regexp.
2026-01-31 13:39:34 +01:00
b9ae9a8b56 Check 'POST /items' payload is application/json
This commit adds a middleware function that checks any POST endpoint is
called with Content-Type: application/json. Returns `HTTP 415
Unsupported Media Type` if this is not the case.

TODO: this commit does not check that the payload is actually
well-formed JSON. If the payload is *not* valid JSON, muutaja will fail,
which will result in an `HTTP 500 Server error`.
2026-01-31 13:37:20 +01:00
c278633c66 Initial commit
This initial version is purposely extremily limited:
* `GET /ahoy` endpoint, just to check the server is alive
* `GET /items` endpoint, always returns the same item
* `POST items` endpoint, checks and print request payload, no
  persistance
* calling any other route defaults to a 404
2026-01-31 13:37:16 +01:00