Deletes+unboosts (#52)

* Status deletes properly streamed now.
* Unboosts now work locally and federated.
* Documentation updates.
This commit is contained in:
Tobi Smethurst
2021-06-21 15:56:00 +02:00
committed by GitHub
parent efbd839181
commit a5fd6f427b
15 changed files with 321 additions and 39 deletions

View File

@ -74,11 +74,9 @@ type Manager interface {
GetOldestIndexedID(timelineAccountID string) (string, error)
// PrepareXFromTop prepares limit n amount of posts, based on their indexed representations, from the top of the index.
PrepareXFromTop(timelineAccountID string, limit int) error
// WipeStatusFromTimeline completely removes a status and from the index and prepared posts of the given account ID
//
// The returned int indicates how many entries were removed.
WipeStatusFromTimeline(timelineAccountID string, statusID string) (int, error)
// WipeStatusFromAllTimelines removes the status from the index and prepared posts of all timelines
// Remove removes one status from the timeline of the given timelineAccountID
Remove(statusID string, timelineAccountID string) (int, error)
// WipeStatusFromAllTimelines removes one status from the index and prepared posts of all timelines
WipeStatusFromAllTimelines(statusID string) error
}
@ -177,12 +175,6 @@ func (m *manager) PrepareXFromTop(timelineAccountID string, limit int) error {
return t.PrepareFromTop(limit)
}
func (m *manager) WipeStatusFromTimeline(timelineAccountID string, statusID string) (int, error) {
t := m.getOrCreateTimeline(timelineAccountID)
return t.Remove(statusID)
}
func (m *manager) WipeStatusFromAllTimelines(statusID string) error {
errors := []string{}
m.accountTimelines.Range(func(k interface{}, i interface{}) bool {
@ -195,7 +187,7 @@ func (m *manager) WipeStatusFromAllTimelines(statusID string) error {
errors = append(errors, err.Error())
}
return false
return true
})
var err error

View File

@ -3,9 +3,16 @@ package timeline
import (
"container/list"
"errors"
"github.com/sirupsen/logrus"
)
func (t *timeline) Remove(statusID string) (int, error) {
l := t.log.WithFields(logrus.Fields{
"func": "Remove",
"accountTimeline": t.accountID,
"statusID": statusID,
})
t.Lock()
defer t.Unlock()
var removed int
@ -19,6 +26,7 @@ func (t *timeline) Remove(statusID string) (int, error) {
return removed, errors.New("Remove: could not parse e as a postIndexEntry")
}
if entry.statusID == statusID {
l.Debug("found status in postIndex")
removeIndexes = append(removeIndexes, e)
}
}
@ -37,6 +45,7 @@ func (t *timeline) Remove(statusID string) (int, error) {
return removed, errors.New("Remove: could not parse e as a preparedPostsEntry")
}
if entry.statusID == statusID {
l.Debug("found status in preparedPosts")
removePrepared = append(removePrepared, e)
}
}
@ -46,5 +55,6 @@ func (t *timeline) Remove(statusID string) (int, error) {
removed = removed + 1
}
l.Debugf("removed %d entries", removed)
return removed, nil
}