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.
35 lines
1.2 KiB
Markdown
35 lines
1.2 KiB
Markdown
# Yohoho - A take-home assignment for HolidayPirates
|
|
|
|
This is my take on the take-home assignment I was given for the Backend Engineer
|
|
position at HolidayPirates.
|
|
|
|
The goal is to implement a very small REST API in Clojure. That API provides two
|
|
endpoints :
|
|
|
|
* `POST /items`: creates an item
|
|
* `GET /items`: returns the list of items
|
|
|
|
## Usage
|
|
|
|
This project uses Leiningen. Assuming you already have Leiningen installed,
|
|
running the API should be as easy as cloning the repo and issuing `lein run`. By
|
|
default, the server listens on port 3000.
|
|
|
|
## Library choices
|
|
|
|
* `reitit`: for handling routes
|
|
* `jetty`: web server
|
|
* `muuntaja`: JSON handling
|
|
* `next.jdbc`: database interface (SQLite)
|
|
|
|
## Documentation links
|
|
|
|
The following links proved more than useful when working on this assignment:
|
|
|
|
* <https://practical.li/clojure-web-services/building-api/>
|
|
* <https://github.com/metosin/reitit/blob/master/doc/ring/content_negotiation.md>
|
|
* <https://ostash.dev/posts/2021-08-22-data-validation-in-clojure/>
|
|
* <https://clojurecivitas.github.io/malli/elements_of_malli.html>
|
|
* <https://github.com/metosin/reitit/blob/master/doc/coercion/malli_coercion.md>
|
|
* <https://cljdoc.org/d/com.github.seancorfield/next.jdbc/1.3.1086/doc/getting-started>
|