diff --git a/src/events.cpp b/src/events.cpp index 255f05d..a7dbd6f 100644 --- a/src/events.cpp +++ b/src/events.cpp @@ -170,15 +170,19 @@ void writeEvents(lmdb::txn &txn, quadrable::Quadrable &qdb, std::deque eventIdsToDelete; + std::set seenAlready; for (auto &ev : evs) { const NostrIndex::Event *flat = flatbuffers::GetRoot(ev.flatStr.data()); + auto quadKey = flatEventToQuadrableKey(flat); - if (lookupEventById(txn, sv(flat->id()))) { + if (lookupEventById(txn, sv(flat->id())) || seenAlready.contains(quadKey)) { ev.status = EventWriteStatus::Duplicate; continue; } + seenAlready.insert(quadKey); + if (env.lookup_Event__deletion(txn, std::string(sv(flat->id())) + std::string(sv(flat->pubkey())))) { ev.status = EventWriteStatus::Deleted; continue; @@ -223,7 +227,7 @@ void writeEvents(lmdb::txn &txn, quadrable::Quadrable &qdb, std::deque