Crates.io | rocket_db_pools |
lib.rs | rocket_db_pools |
version | 0.2.0 |
source | src |
created_at | 2022-05-09 14:12:44.37788 |
updated_at | 2024-05-23 20:35:36.723894 |
description | Rocket async database pooling support |
homepage | |
repository | https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools |
max_upload_size | |
id | 583234 |
size | 62,174 |
db_pools
Asynchronous database driver integration for Rocket. See the crate docs for full usage details.
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'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())
}
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
}