1
0
Fork 0

clean Sonarr Queue after its treatment

This commit is contained in:
Xavier Fontanet 2024-05-20 16:46:41 +02:00
parent 395a5a8226
commit 600a2adb79
2 changed files with 22 additions and 2 deletions

View File

@ -24,11 +24,11 @@
</repository> </repository>
</repositories> </repositories>
<dependencies> <dependencies>
<!-- most of logic --> <!-- most common logic -->
<dependency> <dependency>
<groupId>tv.mangrana</groupId> <groupId>tv.mangrana</groupId>
<artifactId>mangrana-commons</artifactId> <artifactId>mangrana-commons</artifactId>
<version>7.0.0</version> <version>7.1.2</version>
</dependency> </dependency>
<!-- needed for runtime --> <!-- needed for runtime -->

View File

@ -26,6 +26,7 @@ public class QueueFixer {
var distinctRecords = deduplicate(sonarQueue); var distinctRecords = deduplicate(sonarQueue);
var recordsToFix = filterFailedImportsOfIdProblem(distinctRecords); var recordsToFix = filterFailedImportsOfIdProblem(distinctRecords);
recordsToFix.forEach(this::try2FixFailedImport); recordsToFix.forEach(this::try2FixFailedImport);
cleanWorkedElementsFromQueue(sonarQueue, recordsToFix);
} }
private List<Record> retrieveQueueRecordsFromSonarr() { private List<Record> retrieveQueueRecordsFromSonarr() {
@ -60,10 +61,29 @@ public class QueueFixer {
} }
} }
private void cleanWorkedElementsFromQueue(List<Record> sonarQueue, List<Record> recordsToFix) {
List<String> workedTitles = mapRecord2Title(recordsToFix);
List<Integer> recordIds2Delete = filterPresentTitlesFromQueue(sonarQueue, workedTitles);
sonarrApiGateway.deleteQueueElements(recordIds2Delete);
}
private boolean recordsWithImportFailureBecauseIdMatching(Record record) { private boolean recordsWithImportFailureBecauseIdMatching(Record record) {
return record.getStatusMessages().stream() return record.getStatusMessages().stream()
.flatMap(status -> status.getMessages().stream()) .flatMap(status -> status.getMessages().stream())
.anyMatch(IMPORT_FAILURE_BECAUSE_MATCHED_BY_ID::equals); .anyMatch(IMPORT_FAILURE_BECAUSE_MATCHED_BY_ID::equals);
} }
private List<String> mapRecord2Title(List<Record> records) {
return records.stream()
.map(Record::getTitle)
.distinct()
.toList();
}
private List<Integer> filterPresentTitlesFromQueue(List<Record> sonarQueue, List<String> workedTitles) {
return sonarQueue.stream()
.filter(r -> workedTitles.contains(r.getTitle()))
.map(Record::getId)
.toList();
}
} }