diff --git a/src/de/steamwar/sql/SteamwarUser.java b/src/de/steamwar/sql/SteamwarUser.java index 7ce882d..9e75bdd 100644 --- a/src/de/steamwar/sql/SteamwarUser.java +++ b/src/de/steamwar/sql/SteamwarUser.java @@ -81,27 +81,27 @@ public class SteamwarUser { SteamwarUser user = usersByName.get(userName.toLowerCase()); if(user != null) return user; - return byName.select(userName); + return loadPunishments(byName.select(userName)); } public static SteamwarUser get(UUID uuid){ SteamwarUser user = usersByUUID.get(uuid); if(user != null) return user; - return byUUID.select(uuid); + return loadPunishments(byUUID.select(uuid)); } public static SteamwarUser get(int id) { SteamwarUser user = usersById.get(id); if(user != null) return user; - return byID.select(id); + return loadPunishments(byID.select(id)); } public static SteamwarUser get(Long discordId) { if(usersByDiscord.containsKey(discordId)) return usersByDiscord.get(discordId); - return byDiscord.select(discordId); + return loadPunishments(byDiscord.select(discordId)); } public static SteamwarUser getOrCreate(UUID uuid, String name, Consumer newPlayer, BiConsumer nameUpdate) { @@ -123,11 +123,11 @@ public class SteamwarUser { } public static List getServerTeam() { - return getServerTeam.listSelect(); + return loadPunishments(getServerTeam.listSelect()); } public static List getTeam(int teamId) { - return byTeam.listSelect(teamId); + return loadPunishments(byTeam.listSelect(teamId)); } public static void batchCache(Set ids) { @@ -140,6 +140,16 @@ public class SteamwarUser { } } + private static List loadPunishments(List users) { + users.forEach(user -> user.punishments = Punishment.getPunishmentsOfPlayer(user.getId())); + return users; + } + + private static SteamwarUser loadPunishments(SteamwarUser user) { + user.punishments = Punishment.getPunishmentsOfPlayer(user.getId()); + return user; + } + @Getter @Field(keys = {Table.PRIMARY}, autoincrement = true) private final int id; @@ -165,7 +175,7 @@ public class SteamwarUser { @Field(keys = {"discordId"}, nullable = true) private Long discordId; - private final Map punishments; + private Map punishments; public SteamwarUser(int id, UUID uuid, String userName, UserGroup userGroup, int team, boolean leader, Locale locale, boolean manualLocale, Long discordId) { this.id = id; @@ -184,7 +194,6 @@ public class SteamwarUser { if (this.discordId != null) { usersByDiscord.put(discordId, this); } - punishments = Punishment.getPunishmentsOfPlayer(id); //TODO load always on Subservers? } public UUID getUUID() {