From 85fe9802e2c9c60c84c5f0e784b3232a546d7bf8 Mon Sep 17 00:00:00 2001 From: Syer10 Date: Mon, 15 Jun 2026 20:45:43 -0400 Subject: [PATCH] Minor fixes --- .../impl/backup/proto/handlers/BackupMangaHandler.kt | 7 +++++++ .../manga/impl/backup/proto/models/BackupChapter.kt | 2 ++ .../manga/impl/backup/proto/models/BackupManga.kt | 3 +++ .../tachidesk/manga/impl/util/lang/JsonObject.kt | 10 ++++++++++ .../manga/model/dataclass/ChapterDataClass.kt | 3 ++- .../tachidesk/manga/model/dataclass/MangaDataClass.kt | 3 ++- .../migration/M0057_AddMangaChapterMemoFields.kt | 4 ++-- 7 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/lang/JsonObject.kt diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/handlers/BackupMangaHandler.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/handlers/BackupMangaHandler.kt index 6e4c26587..8bbf54433 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/handlers/BackupMangaHandler.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/handlers/BackupMangaHandler.kt @@ -8,6 +8,8 @@ package suwayomi.tachidesk.manga.impl.backup.proto.handlers * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ import eu.kanade.tachiyomi.source.model.UpdateStrategy +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject import org.jetbrains.exposed.v1.core.ResultRow import org.jetbrains.exposed.v1.core.SortOrder import org.jetbrains.exposed.v1.core.and @@ -76,6 +78,8 @@ object BackupMangaHandler { updateStrategy = UpdateStrategy.valueOf(mangaRow[MangaTable.updateStrategy]), lastModifiedAt = mangaRow[MangaTable.lastModifiedAt], version = mangaRow[MangaTable.version], + initialized = mangaRow[MangaTable.initialized], + memo = Json.encodeToString(mangaRow[MangaTable.memo]).encodeToByteArray() ) val mangaId = mangaRow[MangaTable.id].value @@ -238,6 +242,7 @@ object BackupMangaHandler { it[lastModifiedAt] = manga.lastModifiedAt it[version] = manga.version + it[memo] = Json.decodeFromString(manga.memo.decodeToString()) }.value } else { val dbMangaId = dbManga[MangaTable.id].value @@ -260,6 +265,7 @@ object BackupMangaHandler { it[lastModifiedAt] = manga.lastModifiedAt it[version] = manga.version + it[memo] = Json.decodeFromString(manga.memo.decodeToString()) } dbMangaId @@ -351,6 +357,7 @@ object BackupMangaHandler { this[ChapterTable.lastModifiedAt] = chapter.lastModifiedAt this[ChapterTable.version] = chapter.version + this[ChapterTable.memo] = Json.decodeFromString(chapter.memo.decodeToString()) }.map { it[ChapterTable.id].value } } else { emptyList() diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupChapter.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupChapter.kt index cf3941453..3818abea5 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupChapter.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/proto/models/BackupChapter.kt @@ -2,6 +2,7 @@ package suwayomi.tachidesk.manga.impl.backup.proto.models import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber +import suwayomi.tachidesk.manga.impl.util.lang.JsonObjectEmptyBytes @Serializable data class BackupChapter( @@ -22,6 +23,7 @@ data class BackupChapter( // syncyomi @ProtoNumber(11) var lastModifiedAt: Long = 0, @ProtoNumber(12) var version: Long = 0, + @ProtoNumber(13) var memo: ByteArray = JsonObjectEmptyBytes, // suwayomi @ProtoNumber(9000) var meta: Map = emptyMap(), ) 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 3dc29f640..49c65b88b 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 @@ -3,6 +3,7 @@ package suwayomi.tachidesk.manga.impl.backup.proto.models import eu.kanade.tachiyomi.source.model.UpdateStrategy import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber +import suwayomi.tachidesk.manga.impl.util.lang.JsonObjectEmptyBytes @Serializable data class BackupManga( @@ -37,6 +38,8 @@ data class BackupManga( // syncyomi @ProtoNumber(106) var lastModifiedAt: Long = 0, @ProtoNumber(109) var version: Long = 0, + @ProtoNumber(111) var initialized: Boolean = false, + @ProtoNumber(13) var memo: ByteArray = JsonObjectEmptyBytes, // suwayomi @ProtoNumber(9000) var meta: Map = emptyMap(), ) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/lang/JsonObject.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/lang/JsonObject.kt new file mode 100644 index 000000000..c6f2b67db --- /dev/null +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/lang/JsonObject.kt @@ -0,0 +1,10 @@ +package suwayomi.tachidesk.manga.impl.util.lang + +import kotlinx.serialization.json.JsonObject + +val JsonObjectEmpty = JsonObject(emptyMap()) + +val JsonObjectEmptyBytes = byteArrayOf(0x7B, 0x7D) + +val JsonObject.Companion.EMPTY: JsonObject + inline get() = JsonObjectEmpty diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/model/dataclass/ChapterDataClass.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/model/dataclass/ChapterDataClass.kt index f97dad95f..31c9e2dfd 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/model/dataclass/ChapterDataClass.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/model/dataclass/ChapterDataClass.kt @@ -7,6 +7,7 @@ import org.jetbrains.exposed.v1.core.eq import org.jetbrains.exposed.v1.jdbc.selectAll import org.jetbrains.exposed.v1.jdbc.transactions.transaction import suwayomi.tachidesk.manga.impl.Chapter.getChapterMetaMap +import suwayomi.tachidesk.manga.impl.util.lang.EMPTY import suwayomi.tachidesk.manga.model.table.ChapterTable /* @@ -46,7 +47,7 @@ data class ChapterDataClass( val lastModifiedAt: Long = 0, val version: Long = 0, @JsonIgnore - val memo: JsonObject = JsonObject(emptyMap()), + val memo: JsonObject = JsonObject.EMPTY, ) { companion object { fun fromSChapter( diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/model/dataclass/MangaDataClass.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/model/dataclass/MangaDataClass.kt index 5310611c8..1d49bf1d3 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/model/dataclass/MangaDataClass.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/model/dataclass/MangaDataClass.kt @@ -11,6 +11,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore import eu.kanade.tachiyomi.source.model.UpdateStrategy import kotlinx.serialization.json.JsonObject import suwayomi.tachidesk.manga.impl.Manga.getMangaMetaMap +import suwayomi.tachidesk.manga.impl.util.lang.EMPTY import suwayomi.tachidesk.manga.impl.util.lang.trimAll import suwayomi.tachidesk.manga.model.table.MangaStatus import java.time.Instant @@ -47,7 +48,7 @@ data class MangaDataClass( val lastModifiedAt: Long = 0, val version: Long = 0, @JsonIgnore - val memo: JsonObject = JsonObject(emptyMap()), + val memo: JsonObject = JsonObject.EMPTY, ) { override fun toString(): String = "\"$title\" (id= $id) (sourceId= $sourceId)" diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0057_AddMangaChapterMemoFields.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0057_AddMangaChapterMemoFields.kt index e71c6f6ae..3cde94c65 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0057_AddMangaChapterMemoFields.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0057_AddMangaChapterMemoFields.kt @@ -13,7 +13,7 @@ import de.neonew.exposed.migrations.helpers.SQLMigration class M0057_AddMangaChapterMemoFields : SQLMigration() { override val sql = """ - ALTER TABLE MANGA ADD COLUMN memo JSON DEFAULT '{}'; - ALTER TABLE CHAPTER ADD COLUMN memo JSON DEFAULT '{}'; + ALTER TABLE manga ADD COLUMN memo JSON DEFAULT '{}'; + ALTER TABLE chapter ADD COLUMN memo JSON DEFAULT '{}'; """.trimIndent() }