From 2d883ca1da0cdf7cdbdceacf9b78554a690b4b8a Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Mon, 23 Mar 2026 16:29:11 +0100 Subject: [PATCH] fix: cache refresh --- .../ffsaf/domain/service/ResultService.java | 153 +++++++++--------- 1 file changed, 73 insertions(+), 80 deletions(-) diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/ResultService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/ResultService.java index d72365c..c6ac49a 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/ResultService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/ResultService.java @@ -755,94 +755,87 @@ public class ResultService { List cards = new java.util.ArrayList<>(); //noinspection unchecked - cacheClubClassement.invalidateIf( - (p) -> ((Pair>) p).getKey() > System.currentTimeMillis()); + return cacheClubClassement.invalidateIf( + (p) -> ((Pair>) p).getKey() > System.currentTimeMillis()) + .chain(__ -> cache ? Uni.createFrom().voidItem() : cacheClubClassement.invalidate(uuid)) + .chain(o -> cacheClubClassement.getAsync(uuid, k -> cardRepository.list("competition.uuid = ?1", uuid) + .invoke(__ -> System.out.println("Cache miss for club classement with uuid " + uuid)) + .invoke(cards::addAll) + .chain(__ -> matchRepository.list("category.compet.uuid = ?1", uuid)) + .chain(matchs -> { + HashMap> map = new HashMap<>(); + for (MatchModel match : matchs) { + if (!map.containsKey(match.getCategory())) + map.put(match.getCategory(), new java.util.ArrayList<>()); + map.get(match.getCategory()).add(match); + } - if (!cache) - cacheClubClassement.invalidate(uuid); + return Multi.createFrom().iterable(map.entrySet()) + .onItem().call(entry -> Mutiny.fetch(entry.getKey().getTree())) + .map(entry -> { + ResultCategoryData tmp = new ResultCategoryData(); - return cacheClubClassement.getAsync(uuid, k -> cardRepository.list("competition.uuid = ?1", uuid) - .invoke(__ -> System.out.println("Cache miss for club classement with uuid " + uuid)) - .invoke(cards::addAll) - .chain(__ -> matchRepository.list("category.compet.uuid = ?1", uuid)) - .chain(matchs -> { - HashMap> map = new HashMap<>(); - for (MatchModel match : matchs) { - if (!map.containsKey(match.getCategory())) - map.put(match.getCategory(), new java.util.ArrayList<>()); - map.get(match.getCategory()).add(match); - } + getArray2(entry.getValue().stream().map(m -> new MatchModelExtend(m, cards)) + .toList(), + null, tmp); + getClassementArray(entry.getKey(), null, cards, tmp); - return Multi.createFrom().iterable(map.entrySet()) - .onItem().call(entry -> Mutiny.fetch(entry.getKey().getTree())) - .map(entry -> { - ResultCategoryData tmp = new ResultCategoryData(); + return tmp; + }) + .collect().asList(); + }) + .map(categoryData -> { + HashMap clubMap = new HashMap<>(); - getArray2(entry.getValue().stream().map(m -> new MatchModelExtend(m, cards)).toList(), - null, tmp); - getClassementArray(entry.getKey(), null, cards, tmp); + categoryData.forEach( + c -> c.getClassement().stream().map(ResultCategoryData.ClassementData::comb) + .filter(Objects::nonNull) + .distinct() + .map(comb -> { + if (comb instanceof MembreModel membreModel2) { + return (membreModel2.getClub() != null) ? membreModel2.getClub() + .getName() : ""; + } else if (comb instanceof CompetitionGuestModel guestModel) { + return guestModel.getClub(); + } + return ""; + }) + .filter(s -> s != null && !s.isBlank() && !s.equals("Team")) + .distinct() + .forEach(clubName -> clubMap.putIfAbsent(clubName, + new ClubClassement(clubName)))); - return tmp; - }) - .collect().asList(); - }) - .map(categoryData -> { - HashMap clubMap = new HashMap<>(); + categoryData.forEach(c -> c.getClassement().forEach(classementData -> { + if (classementData.rank() > 3) + return; - categoryData.forEach(c -> c.getClassement().stream().map(ResultCategoryData.ClassementData::comb) - .filter(Objects::nonNull) - .distinct() - .map(comb -> { - if (comb instanceof MembreModel membreModel2) { - return (membreModel2.getClub() != null) ? membreModel2.getClub().getName() : ""; - } else if (comb instanceof CompetitionGuestModel guestModel) { - return guestModel.getClub(); + if (classementData.comb() != null) { + String clubName = ""; + if (classementData.comb() instanceof MembreModel membreModel2) { + clubName = (membreModel2.getClub() != null) ? membreModel2.getClub() + .getName() : ""; + } else if (classementData.comb() instanceof CompetitionGuestModel guestModel) { + clubName = guestModel.getClub(); + } + + if (clubName != null && !clubName.isBlank() + && !clubName.equals("Team") && clubMap.containsKey(clubName)) { + ClubClassement entity = clubMap.get(clubName); + entity.score[classementData.rank() - 1]++; + entity.tt_score += 4 - classementData.rank(); + } } - return ""; - }) - .filter(s -> s != null && !s.isBlank() && !s.equals("Team")) - .distinct() - .forEach(clubName -> clubMap.putIfAbsent(clubName, new ClubClassement(clubName)))); + })); - System.out.println(clubMap.keySet()); - - categoryData.forEach(c -> c.getClassement().forEach(classementData -> { - System.out.println("Classement data for " + c.getName() + ": " + classementData.name() + " - " + - classementData.comb() + " - " + classementData.rank()); - if (classementData.rank() > 3) - return; - - System.out.println( - "Processing classement data for " + c.getName() + ": " + classementData.name()); - - if (classementData.comb() != null) { - String clubName = ""; - if (classementData.comb() instanceof MembreModel membreModel2) { - clubName = (membreModel2.getClub() != null) ? membreModel2.getClub().getName() : ""; - } else if (classementData.comb() instanceof CompetitionGuestModel guestModel) { - clubName = guestModel.getClub(); - } - System.out.println("-> " + clubName + "- " + (clubName != null && !clubName.isBlank() - && !clubName.equals("Team") && clubMap.containsKey(clubName))); - - if (clubName != null && !clubName.isBlank() - && !clubName.equals("Team") && clubMap.containsKey(clubName)) { - ClubClassement entity = clubMap.get(clubName); - entity.score[classementData.rank() - 1]++; - entity.tt_score += 4 - classementData.rank(); - } - } - })); - - return clubMap.values().stream() - .sorted(Comparator.comparingInt((ClubClassement c) -> c.tt_score) - .thenComparingInt(c -> c.score[0]) - .thenComparingInt(c -> c.score[1]) - .thenComparingInt(c -> c.score[2]).reversed()) - .toList(); - }) - .map(l -> new Pair<>(System.currentTimeMillis() + 60 * 1000L, l)) - ).map(Pair::getValue); + return clubMap.values().stream() + .sorted(Comparator.comparingInt((ClubClassement c) -> c.tt_score) + .thenComparingInt(c -> c.score[0]) + .thenComparingInt(c -> c.score[1]) + .thenComparingInt(c -> c.score[2]).reversed()) + .toList(); + }) + .map(l -> new Pair<>(System.currentTimeMillis() + 60 * 1000L, l)) + ).map(Pair::getValue)); } @Data