macro rocket_db_pools_codegen

Procedural macros for rocket_db_pools

5 releases

0.2.0 May 23, 2024
0.1.0 Nov 17, 2023
0.1.0-rc.4 Nov 2, 2023
0.1.0-rc.3 Mar 24, 2023
0.1.0-rc.2 May 9, 2022

#1645 in Procedural macros

Download history 2179/week @ 2024-07-22 2250/week @ 2024-07-29 2910/week @ 2024-08-05 3202/week @ 2024-08-12 3624/week @ 2024-08-19 3191/week @ 2024-08-26 3453/week @ 2024-09-02 3047/week @ 2024-09-09 2596/week @ 2024-09-16 3176/week @ 2024-09-23 2509/week @ 2024-09-30 1762/week @ 2024-10-07 1915/week @ 2024-10-14 2730/week @ 2024-10-21 2637/week @ 2024-10-28 2836/week @ 2024-11-04

10,184 downloads per month
Used in 16 crates (via rocket_db_pools)

MIT/Apache

11KB
101 lines

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:

    [dependencies.rocket_db_pools]
    version = "0.2.0"
    features = ["sqlx_sqlite"]
    
  2. Choose a name for your database, here sqlite_logs. Configure at least a URL for the database:

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

    use rocket_db_pools::{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:

    #[get("/<id>")]
    async fn read(mut db: Connection<Logs>, id: i64) -> Result<Log> {
        sqlx::query!("SELECT content FROM logs WHERE id = ?", id)
            .fetch_one(&mut *db)
            .map_ok(|r| Log(r.content))
            .await
    }
    

Dependencies

~0.4–0.9MB
~21K SLoC