Skip to content

Commit 80ca6eb

Browse files
Oleg Komarovbartvdbraak
authored andcommitted
BLENDER: Fix RemoveUserBadges incorrect sql
1 parent 4f41797 commit 80ca6eb

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

models/user/badge.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,13 +105,23 @@ func RemoveUserBadge(ctx context.Context, u *User, badge *Badge) error {
105105
// RemoveUserBadges removes badges from a user.
106106
func RemoveUserBadges(ctx context.Context, u *User, badges []*Badge) error {
107107
return db.WithTx(ctx, func(ctx context.Context) error {
108+
badgeSlugs := make([]string, 0, len(badges))
108109
for _, badge := range badges {
109-
if _, err := db.GetEngine(ctx).
110-
Join("INNER", "badge", "badge.id = `user_badge`.badge_id").
111-
Where("`user_badge`.user_id=? AND `badge`.slug=?", u.ID, badge.Slug).
112-
Delete(&UserBadge{}); err != nil {
113-
return err
114-
}
110+
badgeSlugs = append(badgeSlugs, badge.Slug)
111+
}
112+
var userBadges []UserBadge
113+
if err := db.GetEngine(ctx).Table("user_badge").
114+
Join("INNER", "badge", "badge.id = `user_badge`.badge_id").
115+
Where("`user_badge`.user_id = ?", u.ID).In("`badge`.slug", badgeSlugs).
116+
Find(&userBadges); err != nil {
117+
return err
118+
}
119+
userBadgeIDs := make([]int64, 0, len(userBadges))
120+
for _, ub := range userBadges {
121+
userBadgeIDs = append(userBadgeIDs, ub.ID)
122+
}
123+
if _, err := db.GetEngine(ctx).Table("user_badge").In("id", userBadgeIDs).Delete(); err != nil {
124+
return err
115125
}
116126
return nil
117127
})

0 commit comments

Comments
 (0)