saveEventIfAbsent method

  1. @override
Future<bool> saveEventIfAbsent(
  1. Nip01Event event
)
override

Stores event only when its id is not already present.

Returns true when the event was inserted and false when an event with the same id already existed. Existing payloads must never be overwritten.

Implementation

@override
Future<bool> saveEventIfAbsent(Nip01Event event) async {
  await dbRdy;
  return _objectBox.store.runInTransaction(TxMode.write, () {
    final eventBox = _objectBox.store.box<DbNip01Event>();
    final query =
        eventBox.query(DbNip01Event_.nostrId.equals(event.id)).build();
    try {
      if (query.findFirst() != null) {
        return false;
      }
      eventBox.put(DbNip01Event.fromNdk(event), mode: PutMode.insert);
      return true;
    } finally {
      query.close();
    }
  });
}