Skip to content

Commit 2943b31

Browse files
committed
Speed up deleting of global user achievements.
Instead of listing user achievements and then deleting them one by one in a loop, just delete them with one query using a `where` statement.
1 parent 688fd34 commit 2943b31

File tree

1 file changed

+2
-11
lines changed

1 file changed

+2
-11
lines changed

lib/WeBWorK/DB.pm

+2-11
Original file line numberDiff line numberDiff line change
@@ -1467,17 +1467,8 @@ sub deleteGlobalUserAchievement {
14671467
# userAchievementID can be undefined if being called from this package
14681468
my $U = caller eq __PACKAGE__ ? "!" : "";
14691469
my ($self, $userID) = shift->checkArgs(\@_, "user_id$U");
1470-
1471-
my @achievements = $self->listUserAchievements($userID);
1472-
foreach my $achievement (@achievements) {
1473-
$self->deleteUserAchievement($userID, $achievement);
1474-
}
1475-
1476-
if ($self->{global_user_achievement}) {
1477-
return $self->{global_user_achievement}->delete($userID);
1478-
} else {
1479-
return 0;
1480-
}
1470+
$self->{achievement_user}->delete_where({ user_id => $userID });
1471+
return $self->{global_user_achievement}->delete($userID);
14811472
}
14821473

14831474
################################################################################

0 commit comments

Comments
 (0)