mmm: Rescan()

This commit is contained in:
fiatjaf
2025-10-14 00:19:52 +00:00
parent 776a82ba7f
commit 95c70e3225
3 changed files with 234 additions and 5 deletions
+13 -5
View File
@@ -66,11 +66,8 @@ func (il *IndexingLayer) delete(mmmtxn *lmdb.Txn, iltxn *lmdb.Txn, id nostr.ID)
return fmt.Errorf("failed to load event %x when deleting: %w", id[:], err)
}
// calculate all index keys we have for this event and delete them
for k := range il.getIndexKeysForEvent(evt) {
if err := iltxn.Del(k.dbi, k.key, val[0:12]); err != nil && !lmdb.IsNotFound(err) {
return fmt.Errorf("index entry %v/%x deletion failed: %w", k.dbi, k.key, err)
}
if err := il.deleteIndexes(iltxn, evt, val[0:12]); err != nil {
return fmt.Errorf("failed to delete indexes for %s=>%v: %w", evt.ID, val[0:12], err)
}
// if there are no more refs we delete the event from the id index and mmap
@@ -82,3 +79,14 @@ func (il *IndexingLayer) delete(mmmtxn *lmdb.Txn, iltxn *lmdb.Txn, id nostr.ID)
return nil
}
func (il *IndexingLayer) deleteIndexes(iltxn *lmdb.Txn, event nostr.Event, posbytes []byte) error {
// calculate all index keys we have for this event and delete them
for k := range il.getIndexKeysForEvent(event) {
if err := iltxn.Del(k.dbi, k.key, posbytes); err != nil && !lmdb.IsNotFound(err) {
return fmt.Errorf("index entry %v/%x deletion failed: %w", k.dbi, k.key, err)
}
}
return nil
}