diff options
Diffstat (limited to 'internal/db/bundb/user.go')
-rw-r--r-- | internal/db/bundb/user.go | 27 |
1 files changed, 19 insertions, 8 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 { |