summaryrefslogtreecommitdiff
path: root/internal/db/bundb/account.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2023-03-20 19:10:08 +0100
committerLibravatar GitHub <noreply@github.com>2023-03-20 18:10:08 +0000
commite8595f0c64f527af0913d1a426b697e67ff74ac9 (patch)
treea5d45b1ad8b96318944408a23fda91f008643900 /internal/db/bundb/account.go
parent[chore]: Bump github.com/miekg/dns from 1.1.51 to 1.1.52 (#1636) (diff)
downloadgotosocial-e8595f0c64f527af0913d1a426b697e67ff74ac9.tar.xz
[chore] Refactor account deleting/block logic, tidy up some other processing things (#1599)
* start refactoring account deletion * update to use state.DB * further messing about * some more tidying up * more tidying, cleaning, nice-making * further adventures in refactoring and the woes of technical debt * update fr accept/reject * poking + prodding * fix up deleting * create fave uri * don't log using requestingAccount.ID because it might be nil * move getBookmarks function * use exists query to check for status bookmark * use deletenotifications func * fiddle * delete follow request notif * split up some db functions * Fix possible nil pointer panic * fix more possible nil pointers * fix license headers * warn when follow missing (target) account * return wrapped err when bookmark/fave models can't be retrieved * simplify self account delete * warn log likely race condition * de-sillify status delete loop * move error check due north * warn when unfollowSideEffects has no target account * warn when no boost account is found * warn + dump follow when no account * more warnings * warn on fave account not set * move for loop inside anonymous function * fix funky logic * don't remove mutual account items on block; do make sure unfollow occurs in both directions!
Diffstat (limited to 'internal/db/bundb/account.go')
-rw-r--r--internal/db/bundb/account.go40
1 files changed, 6 insertions, 34 deletions
diff --git a/internal/db/bundb/account.go b/internal/db/bundb/account.go
index 17f2cae65..df73168e2 100644
--- a/internal/db/bundb/account.go
+++ b/internal/db/bundb/account.go
@@ -191,9 +191,12 @@ func (a *accountDB) PutAccount(ctx context.Context, account *gtsmodel.Account) d
})
}
-func (a *accountDB) UpdateAccount(ctx context.Context, account *gtsmodel.Account) db.Error {
- // Update the account's last-updated
+func (a *accountDB) UpdateAccount(ctx context.Context, account *gtsmodel.Account, columns ...string) db.Error {
account.UpdatedAt = time.Now()
+ if len(columns) > 0 {
+ // If we're updating by column, ensure "updated_at" is included.
+ columns = append(columns, "updated_at")
+ }
return a.state.Caches.GTS.Account().Store(account, func() error {
// It is safe to run this database transaction within cache.Store
@@ -226,6 +229,7 @@ func (a *accountDB) UpdateAccount(ctx context.Context, account *gtsmodel.Account
_, err := tx.NewUpdate().
Model(account).
Where("? = ?", bun.Ident("account.id"), account.ID).
+ Column(columns...).
Exec(ctx)
return err
})
@@ -477,38 +481,6 @@ func (a *accountDB) GetAccountWebStatuses(ctx context.Context, accountID string,
return a.statusesFromIDs(ctx, statusIDs)
}
-func (a *accountDB) GetBookmarks(ctx context.Context, accountID string, limit int, maxID string, minID string) ([]*gtsmodel.StatusBookmark, db.Error) {
- bookmarks := []*gtsmodel.StatusBookmark{}
-
- q := a.conn.
- NewSelect().
- TableExpr("? AS ?", bun.Ident("status_bookmarks"), bun.Ident("status_bookmark")).
- Order("status_bookmark.id DESC").
- Where("? = ?", bun.Ident("status_bookmark.account_id"), accountID)
-
- if accountID == "" {
- return nil, errors.New("must provide an account")
- }
-
- if limit != 0 {
- q = q.Limit(limit)
- }
-
- if maxID != "" {
- q = q.Where("? < ?", bun.Ident("status_bookmark.id"), maxID)
- }
-
- if minID != "" {
- q = q.Where("? > ?", bun.Ident("status_bookmark.id"), minID)
- }
-
- if err := q.Scan(ctx, &bookmarks); err != nil {
- return nil, a.conn.ProcessError(err)
- }
-
- return bookmarks, nil
-}
-
func (a *accountDB) GetAccountBlocks(ctx context.Context, accountID string, maxID string, sinceID string, limit int) ([]*gtsmodel.Account, string, string, db.Error) {
blocks := []*gtsmodel.Block{}