Fix chapter duplicates if its a different url but same chapter list size (#759)

This commit is contained in:
Mitchell Syer
2023-11-05 10:52:10 -05:00
committed by GitHub
parent 16dbad8bdf
commit db36896f92

View File

@@ -45,7 +45,6 @@ import suwayomi.tachidesk.manga.model.table.MangaTable
import suwayomi.tachidesk.manga.model.table.PageTable import suwayomi.tachidesk.manga.model.table.PageTable
import suwayomi.tachidesk.manga.model.table.toDataClass import suwayomi.tachidesk.manga.model.table.toDataClass
import suwayomi.tachidesk.server.serverConfig import suwayomi.tachidesk.server.serverConfig
import java.lang.Long
import java.time.Instant import java.time.Instant
import java.util.TreeSet import java.util.TreeSet
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@@ -202,11 +201,9 @@ object Chapter {
val deletedReadChapterNumbers = TreeSet<Float>() val deletedReadChapterNumbers = TreeSet<Float>()
val deletedBookmarkedChapterNumbers = TreeSet<Float>() val deletedBookmarkedChapterNumbers = TreeSet<Float>()
val deletedDownloadedChapterNumbers = TreeSet<Float>() val deletedDownloadedChapterNumbers = TreeSet<Float>()
val deletedChapterNumberDateFetchMap = mutableMapOf<Float, kotlin.Long>() val deletedChapterNumberDateFetchMap = mutableMapOf<Float, Long>()
// clear any orphaned/duplicate chapters that are in the db but not in `chapterList` // clear any orphaned/duplicate chapters that are in the db but not in `chapterList`
val dbChapterCount = chaptersInDb.count()
if (dbChapterCount > chapterList.size) { // we got some clean up due
val chapterUrls = chapterList.map { it.url }.toSet() val chapterUrls = chapterList.map { it.url }.toSet()
val chaptersIdsToDelete = val chaptersIdsToDelete =
@@ -223,6 +220,8 @@ object Chapter {
} }
} }
// we got some clean up due
if (chaptersIdsToDelete.isNotEmpty()) {
transaction { transaction {
PageTable.deleteWhere { PageTable.chapter inList chaptersIdsToDelete } PageTable.deleteWhere { PageTable.chapter inList chaptersIdsToDelete }
ChapterTable.deleteWhere { ChapterTable.id inList chaptersIdsToDelete } ChapterTable.deleteWhere { ChapterTable.id inList chaptersIdsToDelete }