[AB-272] improving leaderboard performance

fixing leaderboard returning wrong pages
making template cache update duration longer
This commit is contained in:
Sheldan
2021-05-26 21:41:04 +02:00
parent 919b52a607
commit 95a639a733
16 changed files with 98 additions and 90 deletions

View File

@@ -3,6 +3,7 @@ package dev.sheldan.abstracto.experience.model.template;
import dev.sheldan.abstracto.experience.model.database.AUserExperience;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import net.dv8tion.jda.api.entities.Member;
import java.io.Serializable;
@@ -15,13 +16,14 @@ import java.io.Serializable;
@Getter
@Builder
public class LeaderBoardEntryModel implements Serializable {
/**
* The {@link AUserExperience experience} for this particular user in the server
*/
private AUserExperience experience;
private Long experience;
private Long messageCount;
private Long userId;
private Integer level;
/**
* The {@link Member member} associated wit this user experience, might be null if the user left he server.
*/
@Setter
private transient Member member;
/**
* The position this {@link dev.sheldan.abstracto.core.models.database.AUserInAServer user} in this server has, ordered by experience {@link AUserExperience#experience}

View File

@@ -52,11 +52,11 @@ public interface UserExperienceManagementService {
/**
* Retrieves a list of {@link AUserExperience} ordered by {@link AUserExperience#experience} and only returns the positions between {@code start} and @{code end}.
* @param server The {@link AServer} to retrieve the users for
* @param start The start index in the complete ordered list to return the {@link AUserExperience} elements for
* @param end The end index for which to return a sublist of {@link AUserExperience} elements for
* @param page The page to retrieve
* @param size The size of each page
* @return A list desc ordered by {@link AUserExperience#experience} only containing the elements between {@code start} and @{code end}
*/
List<AUserExperience> findLeaderBoardUsersPaginated(AServer server, Integer start, Integer end);
List<AUserExperience> findLeaderBoardUsersPaginated(AServer server, Integer page, Integer size);
/**
* Returns the {@link LeaderBoardEntryResult} of the given {@link AUserExperience}.