diff --git a/eventstore/lmdb/save.go b/eventstore/lmdb/save.go index b6cb054..5b8f086 100644 --- a/eventstore/lmdb/save.go +++ b/eventstore/lmdb/save.go @@ -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 }) } diff --git a/eventstore/mmm/save.go b/eventstore/mmm/save.go index 66f29ac..f30df91 100644 --- a/eventstore/mmm/save.go +++ b/eventstore/mmm/save.go @@ -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) { diff --git a/eventstore/wrappers/publisher.go b/eventstore/wrappers/publisher.go index 3c1c1b1..6505e99 100644 --- a/eventstore/wrappers/publisher.go +++ b/eventstore/wrappers/publisher.go @@ -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) } diff --git a/khatru/policies/reactions.go b/eventstore/wrappers/reaction_overwrite.go similarity index 98% rename from khatru/policies/reactions.go rename to eventstore/wrappers/reaction_overwrite.go index d4828cd..84c46c3 100644 --- a/khatru/policies/reactions.go +++ b/eventstore/wrappers/reaction_overwrite.go @@ -1,4 +1,4 @@ -package policies +package wrappers import ( "fiatjaf.com/nostr"