mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-04 03:14:40 -05:00
Fix chapter duplicates if its a different url but same chapter list size (#759)
This commit is contained in:
@@ -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,27 +201,27 @@ 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()
|
val chapterUrls = chapterList.map { it.url }.toSet()
|
||||||
if (dbChapterCount > chapterList.size) { // we got some clean up due
|
|
||||||
val chapterUrls = chapterList.map { it.url }.toSet()
|
|
||||||
|
|
||||||
val chaptersIdsToDelete =
|
val chaptersIdsToDelete =
|
||||||
chaptersInDb.mapNotNull { dbChapter ->
|
chaptersInDb.mapNotNull { dbChapter ->
|
||||||
if (!chapterUrls.contains(dbChapter.url)) {
|
if (!chapterUrls.contains(dbChapter.url)) {
|
||||||
if (dbChapter.read) deletedReadChapterNumbers.add(dbChapter.chapterNumber)
|
if (dbChapter.read) deletedReadChapterNumbers.add(dbChapter.chapterNumber)
|
||||||
if (dbChapter.bookmarked) deletedBookmarkedChapterNumbers.add(dbChapter.chapterNumber)
|
if (dbChapter.bookmarked) deletedBookmarkedChapterNumbers.add(dbChapter.chapterNumber)
|
||||||
if (dbChapter.downloaded) deletedDownloadedChapterNumbers.add(dbChapter.chapterNumber)
|
if (dbChapter.downloaded) deletedDownloadedChapterNumbers.add(dbChapter.chapterNumber)
|
||||||
deletedChapterNumbers.add(dbChapter.chapterNumber)
|
deletedChapterNumbers.add(dbChapter.chapterNumber)
|
||||||
deletedChapterNumberDateFetchMap[dbChapter.chapterNumber] = dbChapter.fetchedAt
|
deletedChapterNumberDateFetchMap[dbChapter.chapterNumber] = dbChapter.fetchedAt
|
||||||
dbChapter.id
|
dbChapter.id
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 }
|
||||||
|
|||||||
Reference in New Issue
Block a user