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
10,184 downloads per month
Used in 16 crates
(via rocket_db_pools)
11KB
101 lines
db_pools
Asynchronous database driver integration for Rocket. See the crate docs for full usage details.
Usage
-
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"]
-
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"
-
Derive
Database
for a unit type (Logs
here) which wraps the selected driver'sPool
type and is decorated with#[database("name")]
. AttachType::init()
to your application'sRocket
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()) }
-
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