[chore] Tidy up status deletion, remove from cache too (#845)

* add func for deleting status from db + cache

* move deletes entirely back to processor
and also only do a delete if the requesting account owns the item being deleted

* tidy up unboost processing

* delete status more efficiently

* fix wrong account id on remote test attachments

* fix federator test
This commit is contained in:
tobi
2022-09-21 19:55:52 +02:00
committed by GitHub
parent 8c20626c51
commit 4cf76a2bfc
12 changed files with 113 additions and 94 deletions

View File

@ -469,29 +469,27 @@ func (p *processor) wipeStatus(ctx context.Context, statusToDelete *gtsmodel.Sta
}
}
// delete all mentions for this status
// delete all mention entries generated by this status
for _, m := range statusToDelete.MentionIDs {
if err := p.db.DeleteByID(ctx, m, &gtsmodel.Mention{}); err != nil {
return err
}
}
// delete all notifications for this status
// delete all notification entries generated by this status
if err := p.db.DeleteWhere(ctx, []db.Where{{Key: "status_id", Value: statusToDelete.ID}}, &[]*gtsmodel.Notification{}); err != nil {
return err
}
// delete all boosts for this status + remove them from timelines
boosts, err := p.db.GetStatusReblogs(ctx, statusToDelete)
if err != nil {
return err
}
for _, b := range boosts {
if err := p.deleteStatusFromTimelines(ctx, b); err != nil {
return err
}
if err := p.db.DeleteByID(ctx, b.ID, b); err != nil {
return err
if boosts, err := p.db.GetStatusReblogs(ctx, statusToDelete); err == nil {
for _, b := range boosts {
if err := p.deleteStatusFromTimelines(ctx, b); err != nil {
return err
}
if err := p.db.DeleteStatusByID(ctx, b.ID); err != nil {
return err
}
}
}
@ -500,5 +498,10 @@ func (p *processor) wipeStatus(ctx context.Context, statusToDelete *gtsmodel.Sta
return err
}
// delete the status itself
if err := p.db.DeleteStatusByID(ctx, statusToDelete.ID); err != nil {
return err
}
return nil
}