# Maker & Taker Daemon Daemon that enables the frontend. The frontend is just a very thin display layer, the daemon does all the heavy lifting and calculations. ## Database We use an `sqlite` database managed by `sqlx`. To make `sqlx` handle the rust types correctly you have to generate `sqlx-data.json` file upon every query change. So, if you develop on the DB and change queries you will have to update the `sqlx` rust mappings like this: ```bash # crated temporary DB DATABASE_URL=sqlite:tempdb cargo sqlx database create # run the migration scripts to create the tables DATABASE_URL=sqlite:tempdb cargo sqlx migrate run # prepare the sqlx-data.json rust mappings DATABASE_URL=sqlite:./daemon/tempdb cargo sqlx prepare -- --bin taker ``` Currently the database for taker and maker is the same. The `taker` binary is used as an example to run the `prepare` command above, but it is irrelevant if you run it for taker or maker. The `tempdb` created can be deleted, it should not be checked into the repo. You can keep it around and just run the `prepare` statement multiple times when working on the database. ## Logging `maker` and `taker` both make use of a log library which can be controlled using the environment variable `RUST_LOG`. By default, logging is set to `debug` for application specific logs only. If you want to see logs by third party libraries, you need to set `RUST_LOG=`. For example, to enable logs for rocket, use: ```bash RUST_LOG=rocket=debug cargo run --bin taker ``` Additionally, logs can be formatted in json format by passing `--json` or `-j`.