crabfit/api/README.md
2023-05-16 02:18:13 +10:00

1.6 KiB

Crab Fit API

This is the API for Crab Fit, written in Rust. It uses the axum framework to run a HTTP server, and supports multiple storage adaptors.

API docs

OpenAPI compatible API docs are generated using utoipa. You can visit them at https://api.crab.fit/docs.

Storage adaptors

Adaptor Works with
memory-adaptor Stores data in memory
sql-adaptor Postgres, MySQL, SQLite
datastore-adaptor Google Datastore

To choose an adaptor, specify it in the features when compiling, e.g. cargo run --features sql-adaptor.

Some adaptors require environment variables to be set. You can specify them in a .env file and they'll be loaded in using dotenvy. See a specific adaptor's readme for more information.

Note

memory-adaptor is the default if no features are specified. Ensure you specify a different adaptor when deploying.

Adding an adaptor

See adding an adaptor in the adaptors readme.

Cleanup task

By default, anyone can run the cleanup task at /tasks/cleanup. This is usually not an issue, as it's based on when the events were last visited, and not when it's run, but if you'd prefer to restrict runs of the cleanup task (as it can be intensive), set a CRON_KEY environment variable in .env. This will require sending an X-Cron-Key header to the route with a value that matches CRON_KEY, or the route will return a 401 Unauthorized error.