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:
Sheldan
2020-06-19 00:36:41 +02:00
parent 19a7d09576
commit 8acd4f818d
4 changed files with 9 additions and 6 deletions

View File

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

View File

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

View File

@@ -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());
}

View File

@@ -9,6 +9,7 @@ import java.time.Instant;
import java.util.Objects;
@Entity
@Table(name = "user_in_server")
@Getter
@Builder
@Setter