From 600a2adb7968ff861a5d464addda9f81dc32a924 Mon Sep 17 00:00:00 2001 From: Xavier Fontanet Date: Mon, 20 May 2024 16:46:41 +0200 Subject: [PATCH] clean Sonarr Queue after its treatment --- pom.xml | 4 ++-- .../java/tv/mangrana/worker/QueueFixer.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index b8aadc4..6521057 100644 --- a/pom.xml +++ b/pom.xml @@ -24,11 +24,11 @@ - + tv.mangrana mangrana-commons - 7.0.0 + 7.1.2 diff --git a/src/main/java/tv/mangrana/worker/QueueFixer.java b/src/main/java/tv/mangrana/worker/QueueFixer.java index ae79599..3528e93 100644 --- a/src/main/java/tv/mangrana/worker/QueueFixer.java +++ b/src/main/java/tv/mangrana/worker/QueueFixer.java @@ -26,6 +26,7 @@ public class QueueFixer { var distinctRecords = deduplicate(sonarQueue); var recordsToFix = filterFailedImportsOfIdProblem(distinctRecords); recordsToFix.forEach(this::try2FixFailedImport); + cleanWorkedElementsFromQueue(sonarQueue, recordsToFix); } private List retrieveQueueRecordsFromSonarr() { @@ -60,10 +61,29 @@ public class QueueFixer { } } + private void cleanWorkedElementsFromQueue(List sonarQueue, List recordsToFix) { + List workedTitles = mapRecord2Title(recordsToFix); + List recordIds2Delete = filterPresentTitlesFromQueue(sonarQueue, workedTitles); + sonarrApiGateway.deleteQueueElements(recordIds2Delete); + } + private boolean recordsWithImportFailureBecauseIdMatching(Record record) { return record.getStatusMessages().stream() .flatMap(status -> status.getMessages().stream()) .anyMatch(IMPORT_FAILURE_BECAUSE_MATCHED_BY_ID::equals); } + private List mapRecord2Title(List records) { + return records.stream() + .map(Record::getTitle) + .distinct() + .toList(); + } + + private List filterPresentTitlesFromQueue(List sonarQueue, List workedTitles) { + return sonarQueue.stream() + .filter(r -> workedTitles.contains(r.getTitle())) + .map(Record::getId) + .toList(); + } }