mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[performance] remove last of relational queries to instead rely on caches (#2091)
This commit is contained in:
@@ -46,12 +46,6 @@ func (p *Processor) Delete(ctx context.Context, account *gtsmodel.Account, origi
|
||||
}...)
|
||||
l.Trace("beginning account delete process")
|
||||
|
||||
if account.IsLocal() {
|
||||
if err := p.deleteUserAndTokensForAccount(ctx, account); err != nil {
|
||||
return gtserror.NewErrorInternalError(err)
|
||||
}
|
||||
}
|
||||
|
||||
if err := p.deleteAccountFollows(ctx, account); err != nil {
|
||||
return gtserror.NewErrorInternalError(err)
|
||||
}
|
||||
@@ -72,6 +66,14 @@ func (p *Processor) Delete(ctx context.Context, account *gtsmodel.Account, origi
|
||||
return gtserror.NewErrorInternalError(err)
|
||||
}
|
||||
|
||||
if account.IsLocal() {
|
||||
// we tokens, applications and clients for account as one of the last
|
||||
// stages during deletion, as other database models rely on these.
|
||||
if err := p.deleteUserAndTokensForAccount(ctx, account); err != nil {
|
||||
return gtserror.NewErrorInternalError(err)
|
||||
}
|
||||
}
|
||||
|
||||
// To prevent the account being created again,
|
||||
// stubbify it and update it in the db.
|
||||
// The account will not be deleted, but it
|
||||
@@ -129,7 +131,7 @@ func (p *Processor) deleteUserAndTokensForAccount(ctx context.Context, account *
|
||||
}
|
||||
|
||||
// Delete any OAuth applications associated with this token.
|
||||
if err := p.state.DB.DeleteWhere(ctx, []db.Where{{Key: "client_id", Value: t.ClientID}}, &[]*gtsmodel.Application{}); err != nil {
|
||||
if err := p.state.DB.DeleteApplicationByClientID(ctx, t.ClientID); err != nil {
|
||||
return gtserror.Newf("db error deleting application: %w", err)
|
||||
}
|
||||
|
||||
@@ -305,7 +307,17 @@ func (p *Processor) deleteAccountStatuses(ctx context.Context, account *gtsmodel
|
||||
statusLoop:
|
||||
for {
|
||||
// Page through account's statuses.
|
||||
statuses, err = p.state.DB.GetAccountStatuses(ctx, account.ID, deleteSelectLimit, false, false, maxID, "", false, false)
|
||||
statuses, err = p.state.DB.GetAccountStatuses(
|
||||
ctx,
|
||||
account.ID,
|
||||
deleteSelectLimit,
|
||||
false,
|
||||
false,
|
||||
maxID,
|
||||
"",
|
||||
false,
|
||||
false,
|
||||
)
|
||||
if err != nil && !errors.Is(err, db.ErrNoEntries) {
|
||||
// Make sure we don't have a real error.
|
||||
return err
|
||||
|
Reference in New Issue
Block a user