mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-29 01:32:25 -05:00
[bugfix] delete interaction requests when deleting account (#4278)
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl> # Description I recently noticed that pending interaction requests don't disappear on domain suspension. ## Checklist - [x] I/we have read the [GoToSocial contribution guidelines](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md). - [ ] I/we have discussed the proposed changes already, either in an issue on the repository, or in the Matrix chat. - [x] I/we have not leveraged AI to create the proposed changes. - [x] I/we have performed a self-review of added code. - [x] I/we have written code that is legible and maintainable by others. - [x] I/we have commented the added code, particularly in hard-to-understand areas. - [ ] I/we have made any necessary changes to documentation. - [ ] I/we have added tests that cover new code. - [x] I/we have run tests and they pass locally with the changes. - [x] I/we have run `go fmt ./...` and `golangci-lint run`. Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4278 Co-authored-by: nicole mikołajczyk <git@mkljczk.pl> Co-committed-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
parent
8b615391e5
commit
29d481d769
3 changed files with 32 additions and 0 deletions
|
|
@ -268,6 +268,28 @@ func (i *interactionDB) DeleteInteractionRequestByID(ctx context.Context, id str
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *interactionDB) DeleteInteractionRequestsByInteractingAccountID(ctx context.Context, accountID string) error {
|
||||||
|
// Gather necessary fields from
|
||||||
|
// deleted for cache invaliation.
|
||||||
|
var deleted []*gtsmodel.InteractionRequest
|
||||||
|
|
||||||
|
if _, err := i.db.NewDelete().
|
||||||
|
Model(&deleted).
|
||||||
|
Returning("?", bun.Ident("id")).
|
||||||
|
Where("? = ?", bun.Ident("interacting_account_id"), accountID).
|
||||||
|
Exec(ctx); err != nil &&
|
||||||
|
!errors.Is(err, db.ErrNoEntries) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, deleted := range deleted {
|
||||||
|
// Invalidate cached interaction requests by ID.
|
||||||
|
i.state.Caches.DB.InteractionRequest.Invalidate("ID", deleted.ID)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (i *interactionDB) GetInteractionsRequestsForAcct(
|
func (i *interactionDB) GetInteractionsRequestsForAcct(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
acctID string,
|
acctID string,
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,10 @@ type Interaction interface {
|
||||||
// DeleteInteractionRequestByID deletes one request with the given ID.
|
// DeleteInteractionRequestByID deletes one request with the given ID.
|
||||||
DeleteInteractionRequestByID(ctx context.Context, id string) error
|
DeleteInteractionRequestByID(ctx context.Context, id string) error
|
||||||
|
|
||||||
|
// DeleteInteractionRequestsByInteractingAccountID deletes all requests
|
||||||
|
// originating from the given account ID.
|
||||||
|
DeleteInteractionRequestsByInteractingAccountID(ctx context.Context, accountID string) error
|
||||||
|
|
||||||
// GetInteractionsRequestsForAcct returns pending interactions targeting
|
// GetInteractionsRequestsForAcct returns pending interactions targeting
|
||||||
// the given (optional) account ID and the given (optional) status ID.
|
// the given (optional) account ID and the given (optional) status ID.
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -478,6 +478,12 @@ func (p *Processor) deleteAccountPeripheral(
|
||||||
err != nil && !errors.Is(err, db.ErrNoEntries) {
|
err != nil && !errors.Is(err, db.ErrNoEntries) {
|
||||||
log.Errorf("error deleting poll votes by account: %v", err)
|
log.Errorf("error deleting poll votes by account: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete all interaction requests from given account, local and remote.
|
||||||
|
if err := p.state.DB.DeleteInteractionRequestsByInteractingAccountID(ctx, account.ID); // nocollapse
|
||||||
|
err != nil && !errors.Is(err, db.ErrNoEntries) {
|
||||||
|
log.Errorf("error deleting interaction requests by account: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// processSideEffect will process the given side effect details,
|
// processSideEffect will process the given side effect details,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue