Skip to main content

Module db

Module db 

Source
Expand description

Db: the database handle application code passes around.

A Db is a cheap clone that points either at a connection pool or at an open transaction. Every ORM entry point takes &Db, so the same code runs inside or outside a transaction:

ⓘ
db.transaction(|tx| async move {
    let user = User::objects(&tx).get(User::id.eq(1)).await?;
    Post::objects(&tx).filter(Post::author.eq(user.id)).delete().await?;
    Ok::<_, OrmError>(())
}).await?;

Inside the closure use tx, not the outer db: the outer handle would take a second connection, which deadlocks on a one-connection pool such as sqlite::memory:.

Structs§

Databases
Named databases ("default", "analytics", …) plus an optional DatabaseRouter.
Db
Handle to a database: a pool, or an open transaction.