This commit is contained in:
+9
-8
@@ -294,17 +294,17 @@ func (events *EventStore) SaveEvent(evt nostr.Event) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (events *EventStore) ReplaceEvent(evt nostr.Event) error {
|
||||
func (events *EventStore) ReplaceEvent(evt nostr.Event) ([]nostr.Event, error) {
|
||||
filter := nostr.Filter{Kinds: []nostr.Kind{evt.Kind}, Authors: []nostr.PubKey{evt.PubKey}}
|
||||
if evt.Kind.IsAddressable() {
|
||||
filter.Tags = nostr.TagMap{"d": []string{evt.Tags.GetD()}}
|
||||
}
|
||||
|
||||
shouldSave := true
|
||||
shouldDelete := make([]nostr.ID, 0)
|
||||
shouldDelete := make([]nostr.Event, 0)
|
||||
for previous := range events.QueryEvents(filter, 1) {
|
||||
if previous.CreatedAt <= evt.CreatedAt {
|
||||
shouldDelete = append(shouldDelete, previous.ID)
|
||||
shouldDelete = append(shouldDelete, previous)
|
||||
} else {
|
||||
shouldSave = false
|
||||
}
|
||||
@@ -312,16 +312,16 @@ func (events *EventStore) ReplaceEvent(evt nostr.Event) error {
|
||||
|
||||
if shouldSave {
|
||||
if err := events.SaveEvent(evt); err != nil && err != eventstore.ErrDupEvent {
|
||||
return fmt.Errorf("failed to save: %w", err)
|
||||
return nil, fmt.Errorf("failed to save: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Wait until the end to delete old events, just in case our new one doesn't save
|
||||
for _, id := range shouldDelete {
|
||||
events.DeleteEvent(id)
|
||||
for _, previous := range shouldDelete {
|
||||
events.DeleteEvent(previous.ID)
|
||||
}
|
||||
|
||||
return nil
|
||||
return shouldDelete, nil
|
||||
}
|
||||
|
||||
func (events *EventStore) CountEvents(filter nostr.Filter) (uint32, error) {
|
||||
@@ -344,7 +344,8 @@ func (events *EventStore) CountEvents(filter nostr.Filter) (uint32, error) {
|
||||
|
||||
func (events *EventStore) StoreEvent(event nostr.Event) error {
|
||||
if event.Kind.IsReplaceable() || event.Kind.IsAddressable() {
|
||||
return events.ReplaceEvent(event)
|
||||
_, err := events.ReplaceEvent(event)
|
||||
return err
|
||||
}
|
||||
|
||||
if err := events.SaveEvent(event); err != nil && err != eventstore.ErrDupEvent {
|
||||
|
||||
@@ -391,7 +391,7 @@ func TestEventStore_ReplaceEvent(t *testing.T) {
|
||||
}
|
||||
event1.Sign(secret)
|
||||
|
||||
err := store.ReplaceEvent(event1)
|
||||
_, err := store.ReplaceEvent(event1)
|
||||
if err != nil {
|
||||
t.Errorf("ReplaceEvent() error = %v", err)
|
||||
}
|
||||
@@ -405,7 +405,7 @@ func TestEventStore_ReplaceEvent(t *testing.T) {
|
||||
}
|
||||
event2.Sign(secret)
|
||||
|
||||
err = store.ReplaceEvent(event2)
|
||||
_, err = store.ReplaceEvent(event2)
|
||||
if err != nil {
|
||||
t.Errorf("ReplaceEvent() error = %v", err)
|
||||
}
|
||||
@@ -452,7 +452,7 @@ func TestEventStore_ReplaceEvent_OlderEvent(t *testing.T) {
|
||||
}
|
||||
event2.Sign(secret)
|
||||
|
||||
err := store.ReplaceEvent(event2)
|
||||
_, err := store.ReplaceEvent(event2)
|
||||
if err != nil {
|
||||
t.Errorf("ReplaceEvent() with older event error = %v", err)
|
||||
}
|
||||
|
||||
+2
-2
@@ -101,7 +101,7 @@ func MakeInstance(filename string) (*Instance, error) {
|
||||
|
||||
// Expiration
|
||||
|
||||
instance.Relay.StartExpirationManager(instance.Relay.QueryStored, instance.Relay.DeleteEvent)
|
||||
instance.Relay.StartExpirationManager(instance.Relay.QueryStored, instance.Relay.DeleteEvent, nil)
|
||||
|
||||
// HTTP request handling
|
||||
|
||||
@@ -264,7 +264,7 @@ func (instance *Instance) StoreEvent(ctx context.Context, event nostr.Event) err
|
||||
return instance.Events.StoreEvent(event)
|
||||
}
|
||||
|
||||
func (instance *Instance) ReplaceEvent(ctx context.Context, event nostr.Event) error {
|
||||
func (instance *Instance) ReplaceEvent(ctx context.Context, event nostr.Event) ([]nostr.Event, error) {
|
||||
return instance.Events.ReplaceEvent(event)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user