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 Fairing
Returns 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
Some
as long asSelf::fairing()
has been attached. -
async fn run<R: Send + 'static>(&self, impl FnOnce(&mut Db) -> R + Send + 'static) -> R
Runs the specified function or closure, providing it access to the underlying database connection (
&mut Db
). Returns the value returned by the function or closure.