transactionAndTrigger<T> method

  1. @override
Future<T> transactionAndTrigger<T>(
  1. Future<T> action(
    1. Transaction txn
    ), {
  2. bool? exclusive,
})
override

Calls in action must only be done using the transaction object using the database will trigger a dead-lock.

A notification to queries for tables will be sent after the transaction is executed.

Implementation

@override
Future<T> transactionAndTrigger<T>(
  Future<T> Function(sqlite_api.Transaction txn) action, {
  bool? exclusive,
}) async {
  late Set<String> tables;

  final result = await _db.transaction(
    (txn) async {
      final briteTransaction = BriteTransaction(txn);
      final result = await action(briteTransaction);

      tables = briteTransaction.tables;
      return result;
    },
    exclusive: exclusive,
  );

  sendTableTrigger(tables);
  return result;
}