mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-21 15:25:50 +00:00
Fixed multiple server handling for rank command, without this the rank was global, and did not limit the rank to the server
defined the name table name for AUserInAServer
This commit is contained in:
@@ -47,11 +47,11 @@ public interface UserExperienceRepository extends JpaRepository<AUserExperience
|
||||
*/
|
||||
@Query(value = "WITH user_experience_ranked AS" +
|
||||
"( " +
|
||||
" SELECT id, experience, experience_role_id, level_id, message_count, ROW_NUMBER() OVER ( ORDER BY experience DESC ) " +
|
||||
" FROM user_experience" +
|
||||
" SELECT us.id, us.experience, us.experience_role_id, us.level_id, us.message_count, ROW_NUMBER() OVER ( ORDER BY experience DESC ) " +
|
||||
" FROM user_experience us INNER JOIN user_in_server uis ON us.id = uis.user_in_server_id INNER JOIN server s ON s.id = uis.server_reference WHERE s.id = :serverId" +
|
||||
") " +
|
||||
"SELECT rank.id as \"id\", rank.experience as \"experience\", rank.message_count as \"messageCount\", rank.level_id as \"level\", rank.row_number as \"rank\" " +
|
||||
"FROM user_experience_ranked rank " +
|
||||
"WHERE rank.id = :userInServerId", nativeQuery = true)
|
||||
LeaderBoardEntryResult getRankOfUserInServer(@Param("userInServerId") Long id);
|
||||
LeaderBoardEntryResult getRankOfUserInServer(@Param("userInServerId") Long id, @Param("serverId") Long serverId);
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ public class UserExperienceManagementServiceBean implements UserExperienceManage
|
||||
|
||||
@Override
|
||||
public LeaderBoardEntryResult getRankOfUserInServer(AUserExperience userExperience) {
|
||||
return repository.getRankOfUserInServer(userExperience.getId());
|
||||
return repository.getRankOfUserInServer(userExperience.getId(), userExperience.getUser().getServerReference().getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -97,12 +97,14 @@ public class UserExperienceManagementServiceBeanTest extends ExperienceRelatedTe
|
||||
@Test
|
||||
public void testLoadRankOfUser() {
|
||||
long experienceValue = 2L;
|
||||
AUserExperience experience = AUserExperience.builder().experience(experienceValue).id(3L).build();
|
||||
AServer server = MockUtils.getServer();
|
||||
AUserInAServer user = MockUtils.getUserObject(6L, server);
|
||||
AUserExperience experience = AUserExperience.builder().experience(experienceValue).user(user).id(3L).build();
|
||||
LeaderBoardEntryTestImpl leaderBoardEntryTest = LeaderBoardEntryTestImpl
|
||||
.builder()
|
||||
.experience(experienceValue)
|
||||
.build();
|
||||
when(repository.getRankOfUserInServer(experience.getId())).thenReturn(leaderBoardEntryTest);
|
||||
when(repository.getRankOfUserInServer(experience.getId(), server.getId())).thenReturn(leaderBoardEntryTest);
|
||||
LeaderBoardEntryResult rankOfUserInServer = testUnit.getRankOfUserInServer(experience);
|
||||
Assert.assertEquals(experienceValue, rankOfUserInServer.getExperience().longValue());
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "user_in_server")
|
||||
@Getter
|
||||
@Builder
|
||||
@Setter
|
||||
|
||||
Reference in New Issue
Block a user