change ReplaceEvent() interface to return a list of the events deleted.
This commit is contained in:
@@ -8,8 +8,8 @@ import (
|
||||
"go.etcd.io/bbolt"
|
||||
)
|
||||
|
||||
func (b *BoltBackend) ReplaceEvent(evt nostr.Event) error {
|
||||
return b.DB.Update(func(txn *bbolt.Tx) error {
|
||||
func (b *BoltBackend) ReplaceEvent(evt nostr.Event) (deleted []nostr.Event, err error) {
|
||||
err = b.DB.Update(func(txn *bbolt.Tx) error {
|
||||
rawBucket := txn.Bucket(rawEventStore)
|
||||
|
||||
// check if we already have this id
|
||||
@@ -25,12 +25,12 @@ func (b *BoltBackend) ReplaceEvent(evt nostr.Event) error {
|
||||
}
|
||||
|
||||
// now we fetch the past events, whatever they are, delete them and then save the new
|
||||
var err error
|
||||
var qerr error
|
||||
var results iter.Seq[nostr.Event] = func(yield func(nostr.Event) bool) {
|
||||
err = b.query(txn, filter, 10 /* in theory limit could be just 1 and this should work */, yield)
|
||||
qerr = b.query(txn, filter, 10 /* in theory limit could be just 1 and this should work */, yield)
|
||||
}
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to query past events with %s: %w", filter, err)
|
||||
if qerr != nil {
|
||||
return fmt.Errorf("failed to query past events with %s: %w", filter, qerr)
|
||||
}
|
||||
|
||||
shouldStore := true
|
||||
@@ -39,6 +39,7 @@ func (b *BoltBackend) ReplaceEvent(evt nostr.Event) error {
|
||||
if err := b.delete(txn, previous.ID); err != nil {
|
||||
return fmt.Errorf("failed to delete event %s for replacing: %w", previous.ID, err)
|
||||
}
|
||||
deleted = append(deleted, previous)
|
||||
} else {
|
||||
// there is a newer event already stored, so we won't store this
|
||||
shouldStore = false
|
||||
@@ -50,4 +51,5 @@ func (b *BoltBackend) ReplaceEvent(evt nostr.Event) error {
|
||||
|
||||
return nil
|
||||
})
|
||||
return deleted, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user