Expand description
Transaction support for entity-derive.
This module provides type-safe transaction management with automatic commit/rollback semantics. It uses a fluent builder pattern for composing multiple entity operations into a single transaction.
§Overview
Transaction— Entry point for creating transactionsTransactionContext— Holds active transaction, provides repo accessTransactionError— Error wrapper for transaction operations
§Example
ⓘ
use entity_derive::prelude::*;
async fn transfer(pool: &PgPool, from: Uuid, to: Uuid, amount: i64) -> Result<(), AppError> {
Transaction::new(pool)
.with_accounts()
.with_transfers()
.run(|mut ctx| async move {
let from_acc = ctx.accounts().find_by_id(from).await?.ok_or(AppError::NotFound)?;
ctx.accounts().update(from, UpdateAccount {
balance: Some(from_acc.balance - amount),
..Default::default()
}).await?;
ctx.transfers().create(CreateTransfer { from, to, amount }).await?;
Ok(())
})
.await
}Structs§
- Transaction
- Transaction builder for composing multi-entity operations.
- Transaction
Context - Active transaction context with repository access.
Enums§
- Transaction
Error - Error type for transaction operations.