mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-06-30 17:34:39 -05:00
Handle missing track search results on bind (#1196)
It's possible that a manga is bound to a tracker while there is no search result. This happens when e.g. restoring a backup which includes track bindings for which there was never a tracker search. In that case when trying to e.g. copy the binding to another manga, the mutation would fail due to not finding a search result. These cases can be handled by additionally checking the TrackRecordTable to get the necessary track info.
This commit is contained in:
@@ -122,7 +122,7 @@ object Track {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ResultRow.toTrack(mangaId: Int): Track =
|
private fun ResultRow.toTrackFromSearch(mangaId: Int): Track =
|
||||||
Track.create(this[TrackSearchTable.trackerId]).also {
|
Track.create(this[TrackSearchTable.trackerId]).also {
|
||||||
it.manga_id = mangaId
|
it.manga_id = mangaId
|
||||||
it.media_id = this[TrackSearchTable.remoteId]
|
it.media_id = this[TrackSearchTable.remoteId]
|
||||||
@@ -143,8 +143,18 @@ object Track {
|
|||||||
.where {
|
.where {
|
||||||
TrackSearchTable.trackerId eq trackerId and
|
TrackSearchTable.trackerId eq trackerId and
|
||||||
(TrackSearchTable.remoteId eq remoteId)
|
(TrackSearchTable.remoteId eq remoteId)
|
||||||
}.first()
|
}.firstOrNull()
|
||||||
.toTrack(mangaId)
|
?.toTrackFromSearch(mangaId)
|
||||||
|
?: TrackRecordTable
|
||||||
|
.selectAll()
|
||||||
|
.where {
|
||||||
|
(TrackRecordTable.trackerId eq trackerId) and
|
||||||
|
(TrackRecordTable.remoteId eq remoteId)
|
||||||
|
}.first()
|
||||||
|
.toTrack()
|
||||||
|
.apply {
|
||||||
|
manga_id = mangaId
|
||||||
|
}
|
||||||
}
|
}
|
||||||
val tracker = TrackerManager.getTracker(trackerId)!!
|
val tracker = TrackerManager.getTracker(trackerId)!!
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user