Module transaction

Module transaction 

Source
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

§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.
TransactionContext
Active transaction context with repository access.

Enums§

TransactionError
Error type for transaction operations.