saveProofs method

  1. @override
Future<void> saveProofs({
  1. required List<CashuProof> proofs,
  2. required String mintUrl,
})
override

Implementation

@override
Future<void> saveProofs({
  required List<CashuProof> proofs,
  required String mintUrl,
}) async {
  await dbRdy;

  /// upsert logic:

  final store = _objectBox.store;
  store.runInTransaction(TxMode.write, () {
    final box = store.box<DbWalletCashuProof>();

    final dbTokens =
        proofs.map((t) => DbWalletCashuProof.fromNdk(t)).toList();

    // find existing proofs by secret
    final secretsToCheck = dbTokens.map((t) => t.secret).toList();
    final query =
        box.query(DbWalletCashuProof_.secret.oneOf(secretsToCheck)).build();

    try {
      final existing = query.find();

      if (existing.isNotEmpty) {
        box.removeMany(existing.map((t) => t.dbId).toList());
      }

      // insert
      box.putMany(dbTokens);
    } finally {
      query.close();
    }
  });
}