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 optionalDatabaseRouter. - Db
- Handle to a database: a pool, or an open transaction.