mirror of
https://github.com/SergioBenitez/Rocket.git
synced 2026-02-06 10:48:05 +00:00
The `Sync` bound on `Pool` is, as far as I can tell, unneeded. `diesel-async`'s mysql connection pool isn't `Sync` anymore, which is why bound needed to be removed. closes: #2969 |
||
|---|---|---|
| .. | ||
| codegen | ||
| lib | ||
| README.md | ||
db_pools

Asynchronous database driver integration for Rocket. See the crate docs for full usage details.
Usage
-
Add
rocket_db_poolsas a dependency with one or more database driver features enabled:[dependencies.rocket_db_pools] version = "0.1.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
Databasefor a unit type (Logshere) which wraps the selected driver'sPooltype and is decorated with#[database("name")]. AttachType::init()to your application'sRocketto 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 }