mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-29 12:42:24 -05:00
[performance] remove last of relational queries to instead rely on caches (#2091)
This commit is contained in:
parent
9770d54237
commit
91cbcd589e
19 changed files with 507 additions and 107 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue