withTransaction<TResult> method

Future<TResult> withTransaction<TResult>(
  1. Future<TResult> work(
    1. Transaction transaction
    )
)

Implementation

Future<TResult> withTransaction<TResult>(
    Future<TResult> Function(Transaction transaction) work) async {
  final transaction = await startTransaction();
  try {
    final result = await work(transaction);
    await transaction.commit();
    return result;
  } catch (ex) {
    await transaction.abort(errorMessage: ex.toString());
    rethrow;
  } finally {
    await transaction.dispose();
  }
}