transaction<T> static method

Future<T> transaction<T>(
  1. Future<T> callback(
    1. DBTransaction trx
    )
)

Implementation

static Future<T> transaction<T>(
  Future<T> Function(DBTransaction trx) callback,
) async {
  await _ensureConnected();
  final connection = instance;

  await connection.beginTransaction();

  try {
    final trx = DBTransaction(connection);
    final result = await callback(trx);

    await connection.commit();
    return result;
  } catch (e, stack) {
    await connection.rollback();
    Log.error('❌ Transaction failed', error: e, stackTrace: stack);
    rethrow;
  }
}