db_pools ![ci.svg] ![crates.io] ![docs.svg]

Asynchronous database driver integration for Rocket. See the [crate docs] for full usage details.

Usage

  1. Add rocket_db_pools as a dependency with one or more [database driver features] enabled:

    toml [dependencies.rocket_db_pools] version = "0.1.0-rc.2" features = ["sqlx_sqlite"]

  2. Choose a name for your database, here sqlite_logs. [Configure] at least a URL for the database:

    toml [default.databases.sqlite_logs] url = "/path/to/database.sqlite"

  3. [Derive Database] for a unit type (Logs here) which wraps the selected driver's [Pool] type and is decorated with #[database("name")]. Attach Type::init() to your application's Rocket to initialize the database pool:

    ```rust use rocketdbpools::{Database, Connection};

    [derive(Database)]

    [database("sqlite_logs")]

    struct Logs(sqlx::SqlitePool);

    [launch]

    fn rocket() -> _ { rocket::build().attach(Logs::init()) } ```

  4. Use [Connection<Type>] as a request guard to retrieve an active database connection:

    ```rust

    [get("/")]

    async fn read(mut db: Connection, id: i64) -> Result { sqlx::query!("SELECT content FROM logs WHERE id = ?", id) .fetchone(&mut *db) .mapok(|r| Log(r.content)) .await } ```