You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Mariusz Klochowicz 0816da8cd2
Use generic completed enum inside collaborative settlement actors
3 years ago
..
migrations Make all fields on CFD private 3 years ago
src Use generic completed enum inside collaborative settlement actors 3 years ago
tests Phase out log_error macro 3 years ago
Cargo.toml Bump mockall_derive from 0.10.2 to 0.11.0 3 years ago
README.md Add logging library and initialize by default 3 years ago
build.rs Switch to `import_granularity: item` 3 years ago
clippy.toml Disallow calls to tokio::spawn outside dedicated extension trait 3 years ago
prepare_db.sh Add script for preparing the DB for convenience 3 years ago
sqlx-data.json Make all fields on CFD private 3 years ago

README.md

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:

# 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:

RUST_LOG=rocket=debug cargo run --bin taker

Additionally, logs can be formatted in json format by passing --json or -j.