mirror of
https://github.com/Suwayomi/Tachidesk.git
synced 2025-12-23 21:12:37 +01:00
Fix/prevent importing unsupported trackers from backup II (#945)
* Properly prevent importing unsupported trackers from backup Missed the early return in case no tracker record exists in the database in 2f362abb91be875e943b1364eb86d70a4144dd6f... * Remove incorrect non null assertion Prevented unbinding track records of unsupported trackers
This commit is contained in:
@@ -401,16 +401,17 @@ object ProtoBackupImport : ProtoBackupBase() {
|
|||||||
val (existingTracks, newTracks) =
|
val (existingTracks, newTracks) =
|
||||||
tracks.mapNotNull { backupTrack ->
|
tracks.mapNotNull { backupTrack ->
|
||||||
val track = backupTrack.toTrack(mangaId)
|
val track = backupTrack.toTrack(mangaId)
|
||||||
val dbTrack =
|
|
||||||
dbTrackRecordsByTrackerId[backupTrack.syncId]
|
|
||||||
?: // new track
|
|
||||||
return@mapNotNull track
|
|
||||||
|
|
||||||
val isUnsupportedTracker = TrackerManager.getTracker(track.sync_id) == null
|
val isUnsupportedTracker = TrackerManager.getTracker(track.sync_id) == null
|
||||||
if (isUnsupportedTracker) {
|
if (isUnsupportedTracker) {
|
||||||
return@mapNotNull null
|
return@mapNotNull null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val dbTrack =
|
||||||
|
dbTrackRecordsByTrackerId[backupTrack.syncId]
|
||||||
|
?: // new track
|
||||||
|
return@mapNotNull track
|
||||||
|
|
||||||
if (track.toTrackRecordDataClass().forComparison() == dbTrack.toTrackRecordDataClass().forComparison()) {
|
if (track.toTrackRecordDataClass().forComparison() == dbTrack.toTrackRecordDataClass().forComparison()) {
|
||||||
return@mapNotNull null
|
return@mapNotNull null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ object Track {
|
|||||||
TrackRecordTable.select { TrackRecordTable.id eq recordId }.first()
|
TrackRecordTable.select { TrackRecordTable.id eq recordId }.first()
|
||||||
}
|
}
|
||||||
|
|
||||||
val tracker = TrackerManager.getTracker(recordDb[TrackRecordTable.trackerId])!!
|
val tracker = TrackerManager.getTracker(recordDb[TrackRecordTable.trackerId])
|
||||||
|
|
||||||
if (deleteRemoteTrack == true && tracker is DeletableTrackService) {
|
if (deleteRemoteTrack == true && tracker is DeletableTrackService) {
|
||||||
tracker.delete(recordDb.toTrack())
|
tracker.delete(recordDb.toTrack())
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package suwayomi.tachidesk.server.database.migration
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) Contributors to the Suwayomi project
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
import de.neonew.exposed.migrations.helpers.SQLMigration
|
||||||
|
import suwayomi.tachidesk.manga.impl.track.tracker.TrackerManager
|
||||||
|
|
||||||
|
@Suppress("ClassName", "unused")
|
||||||
|
class M0038_RemoveTrackRecordsOfUnsupportedTrackersII : SQLMigration() {
|
||||||
|
override val sql: String =
|
||||||
|
"""
|
||||||
|
DELETE FROM TRACKRECORD WHERE SYNC_ID NOT IN (${TrackerManager.MYANIMELIST}, ${TrackerManager.ANILIST}, ${TrackerManager.MANGA_UPDATES})
|
||||||
|
""".trimIndent()
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user