[chore] reversion: use specific columns for updating user again (#1059)

This commit is contained in:
tobi 2022-11-16 11:27:08 +01:00 committed by GitHub
commit 940abc279c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 27 deletions

View file

@ -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 {

View file

@ -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
}