diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/ProtoBackupExport.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/ProtoBackupExport.kt index 330c3868..159a9ead 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/ProtoBackupExport.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/ProtoBackupExport.kt @@ -43,6 +43,7 @@ object ProtoBackupExport : ProtoBackupBase() { Backup( backupManga(databaseManga, flags), backupCategories(), + emptyList(), backupExtensionInfo(databaseManga) ) } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/ProtoBackupImport.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/ProtoBackupImport.kt index c2a97424..3f87743e 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/ProtoBackupImport.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/ProtoBackupImport.kt @@ -62,7 +62,7 @@ object ProtoBackupImport : ProtoBackupBase() { } // Store source mapping for error messages - sourceMapping = backup.backupSources.map { it.sourceId to it.name }.toMap() + sourceMapping = backup.getSourceMap() // Restore individual manga backup.backupManga.forEach { @@ -103,7 +103,7 @@ object ProtoBackupImport : ProtoBackupBase() { val manga = backupManga.getMangaImpl() val chapters = backupManga.getChaptersImpl() val categories = backupManga.categories - val history = backupManga.history + val history = backupManga.brokenHistory.map { BackupHistory(it.url, it.lastRead) } + backupManga.history val tracks = backupManga.getTrackingImpl() try { diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/ProtoBackupValidator.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/ProtoBackupValidator.kt index 0caa565c..57a1ecd9 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/ProtoBackupValidator.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/ProtoBackupValidator.kt @@ -24,7 +24,7 @@ object ProtoBackupValidator : AbstractBackupValidator() { throw Exception("Backup does not contain any manga.") } - val sources = backup.backupSources.map { it.sourceId to it.name }.toMap() + val sources = backup.getSourceMap() val missingSources = transaction { sources diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/Backup.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/Backup.kt index f764af7b..c32fb203 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/Backup.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/Backup.kt @@ -8,5 +8,11 @@ data class Backup( @ProtoNumber(1) val backupManga: List, @ProtoNumber(2) var backupCategories: List = emptyList(), // Bump by 100 to specify this is a 0.x value - @ProtoNumber(100) var backupSources: List = emptyList(), -) + @ProtoNumber(100) var brokenBackupSources: List = emptyList(), + @ProtoNumber(101) var backupSources: List = emptyList(), +) { + fun getSourceMap(): Map { + return (brokenBackupSources.map { BackupSource(it.name, it.sourceId) } + backupSources) + .associate { it.sourceId to it.name } + } +} diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupHistory.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupHistory.kt index 9ad1c80e..50d34d94 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupHistory.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupHistory.kt @@ -4,7 +4,13 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber @Serializable -data class BackupHistory( +data class BrokenBackupHistory( @ProtoNumber(0) var url: String, @ProtoNumber(1) var lastRead: Long ) + +@Serializable +data class BackupHistory( + @ProtoNumber(1) var url: String, + @ProtoNumber(2) var lastRead: Long +) \ No newline at end of file diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupManga.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupManga.kt index b3fb583c..16b4e9e3 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupManga.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupManga.kt @@ -33,8 +33,9 @@ data class BackupManga( // Bump by 100 for values that are not saved/implemented in 1.x but are used in 0.x @ProtoNumber(100) var favorite: Boolean = true, @ProtoNumber(101) var chapterFlags: Int = 0, - @ProtoNumber(102) var history: List = emptyList(), - @ProtoNumber(103) var viewer_flags: Int? = null + @ProtoNumber(102) var brokenHistory: List = emptyList(), + @ProtoNumber(103) var viewer_flags: Int? = null, + @ProtoNumber(104) var history: List = emptyList(), ) { fun getMangaImpl(): MangaImpl { return MangaImpl().apply { diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupSource.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupSource.kt index 7f7ddbe1..9ae7550b 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupSource.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupSource.kt @@ -5,9 +5,15 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber @Serializable -data class BackupSource( +data class BrokenBackupSource( @ProtoNumber(0) var name: String = "", @ProtoNumber(1) var sourceId: Long +) + +@Serializable +data class BackupSource( + @ProtoNumber(1) var name: String = "", + @ProtoNumber(2) var sourceId: Long ) { companion object { fun copyFrom(source: Source): BackupSource {