Attribute Macro database
#[database]Expand description
Generates a request guard and fairing for retrieving a database connection.
The syntax for the databases macro is:
macro := 'database' '( DATABASE_NAME ')' DATABASE_NAME := string literal
The attribute accepts a single string parameter that indicates the name of the database. This corresponds to the database name set as the database’s configuration key:
The macro generates a FromRequest implementation for the decorated type,
allowing the type to be used as a request guard. This implementation
retrieves a connection from the database pool or fails with a
Status::ServiceUnavailable if connecting to the database times out.
The macro also generates three inherent methods on the decorated type:
-
fn fairing() -> impl FairingReturns a fairing that initializes the associated database connection pool.
-
async fn get_one<P: Phase>(&Rocket<P>) -> Option<Self>Retrieves a connection wrapper from the configured pool. Returns
Someas long asSelf::fairing()has been attached. -
async fn run<R: Send + 'static>(&self, impl FnOnce(&mut Db) -> R + Send + 'static) -> RRuns the specified function or closure, providing it access to the underlying database connection (
&mut Db). Returns the value returned by the function or closure.