$startTransaction method

Future<Client> $startTransaction({
  1. TransactionHeaders? headers,
  2. Duration timeout = const Duration(seconds: 5),
  3. Duration maxWait = const Duration(seconds: 2),
  4. TransactionIsolationLevel? isolationLevel,
})

Start a new transaction.

Implementation

Future<Client> $startTransaction({
  TransactionHeaders? headers,
  Duration timeout = const Duration(seconds: 5),
  Duration maxWait = const Duration(seconds: 2),
  TransactionIsolationLevel? isolationLevel,
}) async {
  // If the client is a transaction, use it.
  if (_transaction != null) {
    return this as Client;
  }

  // Request a new transaction.
  final TransactionInfo transactionInfo = await _engine.startTransaction(
    headers: headers,
    timeout: timeout,
    maxWait: maxWait,
    isolationLevel: isolationLevel,
  );

  return copyWith(
    headers: QueryEngineRequestHeaders(
      transactionId: transactionInfo.id,
      traceparent: headers?.traceparent,
    ),
    transaction: transactionInfo,
  );
}