mirror of
https://github.com/rwf2/Rocket.git
synced 2025-01-19 07:59:05 +00:00
5a4e66ec43
This follows the completed graduation of stable contrib features into core, removing 'rocket_contrib' in its entirety in favor of two new crates. These crates are versioned independently of Rocket's core libraries, allowing upgrades to dependencies without consideration for versions in core libraries. 'rocket_dyn_templates' replaces the contrib 'templates' features. While largely a 1-to-1 copy, it makes the following changes: * the 'tera_templates' feature is now 'tera' * the 'handlebars_templates' feature is now 'handlebars' * fails to compile if neither 'tera' nor 'handlebars' is enabled 'rocket_sync_db_pools' replaces the contrib 'database' features. It makes no changes to the replaced features except that the `database` attribute is properly documented at the crate root. |
||
---|---|---|
.. | ||
codegen | ||
lib | ||
README.md |
sync_db_pools
This crate provides traits, utilities, and a procedural macro for configuring
and accessing database connection pools in Rocket. This implementation is backed
by r2d2
and exposes connections through request guards.
Usage
First, enable the feature corresponding to your database type:
[dependencies.rocket_sync_db_pools]
version = "0.1.0-dev"
default-features = false
features = ["diesel_sqlite_pool"]
A full list of supported databases and their associated feature names is
available in the crate docs. In whichever configuration source you choose,
configure a databases
dictionary with a key for each database, here
sqlite_logs
in a TOML source:
[default.databases]
sqlite_logs = { url = "/path/to/database.sqlite" }
In your application's source code:
#[macro_use] extern crate rocket;
use rocket_sync_db_pools::{database, diesel};
#[database("sqlite_logs")]
struct LogsDbConn(diesel::SqliteConnection);
#[get("/logs/<id>")]
async fn get_logs(conn: LogsDbConn, id: usize) -> Result<Logs> {
conn.run(|c| Logs::by_id(c, id)).await
}
#[launch]
fn rocket() -> _ {
rocket::build().attach(LogsDbConn::fairing())
}
See the crate docs for full details.