eventstore: more consistent ErrDupEvent firing.

This commit is contained in:
fiatjaf
2025-11-12 16:10:50 -03:00
parent bdced49a19
commit 43fabbeb2a
4 changed files with 11 additions and 6 deletions

View File

@@ -4,6 +4,7 @@ import (
"fmt"
"fiatjaf.com/nostr"
"fiatjaf.com/nostr/eventstore"
"fiatjaf.com/nostr/eventstore/codec/betterbinary"
"github.com/PowerDNS/lmdb-go/lmdb"
)
@@ -32,6 +33,10 @@ func (b *LMDBBackend) SaveEvent(evt nostr.Event) error {
return b.save(txn, evt)
}
if err == nil {
return eventstore.ErrDupEvent
}
return err
})
}

View File

@@ -10,6 +10,7 @@ import (
"unsafe"
"fiatjaf.com/nostr"
"fiatjaf.com/nostr/eventstore"
"fiatjaf.com/nostr/eventstore/codec/betterbinary"
"github.com/PowerDNS/lmdb-go/lmdb"
)
@@ -80,7 +81,7 @@ func (b *MultiMmapManager) storeOn(
ilid := binary.BigEndian.Uint16(val[s : s+2])
if il.id == ilid {
// already on the specified layer, we can end here
return false, nil
return false, eventstore.ErrDupEvent
}
}
} else if !lmdb.IsNotFound(err) {

View File

@@ -33,12 +33,11 @@ func (w StorePublisher) Publish(ctx context.Context, evt nostr.Event) error {
// regular events are just saved directly
if err := w.SaveEvent(evt); err != nil && err != eventstore.ErrDupEvent {
return fmt.Errorf("failed to save: %w", err)
} else {
return err
}
return nil
}
// others are replaced
w.Store.ReplaceEvent(evt)
return nil
return w.Store.ReplaceEvent(evt)
}

View File

@@ -1,4 +1,4 @@
package policies
package wrappers
import (
"fiatjaf.com/nostr"