mirror of https://github.com/rwf2/Rocket.git
44ac3f1eb6 | ||
---|---|---|
.. | ||
codegen | ||
lib | ||
README.md |
README.md
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.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
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 }