executeInTransaction<T> method
Execute within a transaction.
Implementation
Future<T> executeInTransaction<T>(
Future<T> Function(TransactionExecutor) callback, {
IsolationLevel? isolationLevel,
}) async {
final transaction = await adapter.startTransaction(isolationLevel);
try {
final txExecutor = TransactionExecutor(
transaction: transaction,
compiler: compiler,
adapter: adapter,
);
final result = await callback(txExecutor);
await transaction.commit();
return result;
} catch (e) {
if (transaction.isActive) {
await transaction.rollback();
}
rethrow;
}
}