# diesel Basic integration of [Diesel](https://diesel.rs) using SQLite for Actix Web. ## Usage ### Install SQLite ```sh # on OpenSUSE sudo zypper install sqlite3-devel libsqlite3-0 sqlite3 # on Ubuntu sudo apt-get install libsqlite3-dev sqlite3 # on Fedora sudo dnf install libsqlite3x-devel sqlite3x # on macOS (using homebrew) brew install sqlite3 ``` ### Initialize SQLite Database ```sh cd databases/diesel cargo install diesel_cli --no-default-features --features sqlite echo "DATABASE_URL=test.db" > .env diesel setup diesel migration run ``` There will now be a database file at `./test.db`. ### Running Server ```sh cd databases/diesel cargo run # Started http server: 127.0.0.1:8080 ``` ### Available Routes #### `POST /user` Inserts a new user into the SQLite DB. Provide a JSON payload with a name. Eg: ```json { "name": "bill" } ``` On success, a response like the following is returned: ```json { "id": "9e46baba-a001-4bb3-b4cf-4b3e5bab5e97", "name": "bill" } ``` <details> <summary>Client Examples</summary> Using [HTTPie]: ```sh http POST localhost:8080/user name=bill ``` Using cURL: ```sh curl -S -X POST --header "Content-Type: application/json" --data '{"name":"bill"}' http://localhost:8080/user ``` </details> #### `GET /user/{user_uid}` Gets a user from the DB using its UID (returned from the insert request or taken from the DB directly). Returns a 404 when no user exists with that UID. <details> <summary>Client Examples</summary> Using [HTTPie]: ```sh http localhost:8080/user/9e46baba-a001-4bb3-b4cf-4b3e5bab5e97 ``` Using cURL: ```sh curl -S http://localhost:8080/user/9e46baba-a001-4bb3-b4cf-4b3e5bab5e97 ``` </details> ### Explore The SQLite DB ```sh sqlite3 test.db ``` ``` sqlite> .tables sqlite> SELECT * FROM users; ``` ## Using Other Databases You can find a complete example of Diesel + PostgreSQL at: [https://github.com/TechEmpower/FrameworkBenchmarks/tree/master/frameworks/Rust/actix](https://github.com/TechEmpower/FrameworkBenchmarks/tree/master/frameworks/Rust/actix) [httpie]: https://httpie.io/cli