summaryrefslogtreecommitdiff
path: root/internal/db
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2022-11-16 11:27:08 +0100
committerLibravatar GitHub <noreply@github.com>2022-11-16 11:27:08 +0100
commit940abc279cb84e6bdb62326565b04c279bfb596b (patch)
tree2a8c03afcc57a70491d486391c0e638864b92017 /internal/db
parent[chore] update database caching library (#1040) (diff)
downloadgotosocial-940abc279cb84e6bdb62326565b04c279bfb596b.tar.xz
[chore] reversion: use specific columns for updating user again (#1059)
Diffstat (limited to 'internal/db')
-rw-r--r--internal/db/bundb/user.go27
-rw-r--r--internal/db/user.go4
2 files changed, 21 insertions, 10 deletions
diff --git a/internal/db/bundb/user.go b/internal/db/bundb/user.go
index d9b281a6f..ab3cc0f67 100644
--- a/internal/db/bundb/user.go
+++ b/internal/db/bundb/user.go
@@ -133,18 +133,29 @@ func (u *userDB) PutUser(ctx context.Context, user *gtsmodel.User) db.Error {
})
}
-func (u *userDB) UpdateUser(ctx context.Context, user *gtsmodel.User) db.Error {
+func (u *userDB) UpdateUser(ctx context.Context, user *gtsmodel.User, columns ...string) db.Error {
// Update the user's last-updated
user.UpdatedAt = time.Now()
- return u.cache.Store(user, func() error {
- _, err := u.conn.
- NewUpdate().
- Model(user).
- Where("? = ?", bun.Ident("user.id"), user.ID).
- Exec(ctx)
+ if len(columns) > 0 {
+ // If we're updating by column, ensure "updated_at" is included
+ columns = append(columns, "updated_at")
+ }
+
+ // Update the user in DB
+ _, err := u.conn.
+ NewUpdate().
+ Model(user).
+ Where("? = ?", bun.Ident("user.id"), user.ID).
+ Column(columns...).
+ Exec(ctx)
+ if err != nil {
return u.conn.ProcessError(err)
- })
+ }
+
+ // Invalidate in cache
+ u.cache.Invalidate("ID", user.ID)
+ return nil
}
func (u *userDB) DeleteUserByID(ctx context.Context, userID string) db.Error {
diff --git a/internal/db/user.go b/internal/db/user.go
index d01a8862a..1c6118fce 100644
--- a/internal/db/user.go
+++ b/internal/db/user.go
@@ -36,8 +36,8 @@ type User interface {
GetUserByConfirmationToken(ctx context.Context, confirmationToken string) (*gtsmodel.User, Error)
// PutUser will attempt to place user in the database
PutUser(ctx context.Context, user *gtsmodel.User) Error
- // UpdateUser updates one user by its primary key.
- UpdateUser(ctx context.Context, user *gtsmodel.User) Error
+ // UpdateUser updates one user by its primary key, updating either only the specified columns, or all of them.
+ UpdateUser(ctx context.Context, user *gtsmodel.User, columns ...string) Error
// DeleteUserByID deletes one user by its ID.
DeleteUserByID(ctx context.Context, userID string) Error
}