From f62a92a64868073c057da68b6605524225bf3784 Mon Sep 17 00:00:00 2001 From: nyne Date: Sat, 17 May 2025 10:36:54 +0800 Subject: [PATCH] Enhance user deletion logic to handle non-existent users and mark deleted usernames --- server/dao/user.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/server/dao/user.go b/server/dao/user.go index 9c98a00..b7c33d9 100644 --- a/server/dao/user.go +++ b/server/dao/user.go @@ -33,7 +33,7 @@ func CreateUser(username string, hashedPassword []byte) (model.User, error) { func ExistsUser(username string) (bool, error) { var count int64 - if err := db.Model(&model.User{}).Where("username = ?", username).Count(&count).Error; err != nil { + if err := db.Unscoped().Model(&model.User{}).Where("username = ?", username).Count(&count).Error; err != nil { return false, err } return count > 0, nil @@ -120,5 +120,15 @@ func SearchUsersByUsername(username string, page, pageSize int) ([]model.User, i } func DeleteUser(id uint) error { + var user model.User + if err := db.First(&user, id).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil + } + return err + } + if err := db.Model(&user).Update("username", "_deleted_").Error; err != nil { + return err + } return db.Delete(&model.User{}, id).Error }