transaction<T> method

  1. @override
Future<T> transaction<T>(
  1. FutureOr<T> f(
    1. Database
    )
)

Enters a database transaction, performing the actions within, and returning the results of f.

If f fails, the transaction will be rolled back, and the responsible exception will be re-thrown.

Whether nested transactions are supported depends on the underlying driver.

Implementation

@override
Future<T> transaction<T>(FutureOr<T> Function(Database) f) {
  return _pool.withResource(() async {
    var executor = await _next();
    return executor.transaction(f);
  });
}