mirror of
https://github.com/Suwayomi/Tachidesk.git
synced 2026-01-19 02:02:37 +01:00
first instance of legacy import
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package ir.armor.tachidesk.impl.backup.legacy
|
||||
|
||||
/*
|
||||
* 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 com.github.salomonbrys.kotson.registerTypeAdapter
|
||||
import com.github.salomonbrys.kotson.registerTypeHierarchyAdapter
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.GsonBuilder
|
||||
import ir.armor.tachidesk.impl.backup.legacy.models.DHistory
|
||||
import ir.armor.tachidesk.impl.backup.legacy.serializer.CategoryTypeAdapter
|
||||
import ir.armor.tachidesk.impl.backup.legacy.serializer.ChapterTypeAdapter
|
||||
import ir.armor.tachidesk.impl.backup.legacy.serializer.HistoryTypeAdapter
|
||||
import ir.armor.tachidesk.impl.backup.legacy.serializer.MangaTypeAdapter
|
||||
import ir.armor.tachidesk.impl.backup.legacy.serializer.TrackTypeAdapter
|
||||
import ir.armor.tachidesk.impl.backup.models.CategoryImpl
|
||||
import ir.armor.tachidesk.impl.backup.models.ChapterImpl
|
||||
import ir.armor.tachidesk.impl.backup.models.MangaImpl
|
||||
import ir.armor.tachidesk.impl.backup.models.TrackImpl
|
||||
|
||||
open class LegacyBackupBase {
|
||||
internal val parser: Gson = when (version) {
|
||||
2 -> GsonBuilder()
|
||||
.registerTypeAdapter<MangaImpl>(MangaTypeAdapter.build())
|
||||
.registerTypeHierarchyAdapter<ChapterImpl>(ChapterTypeAdapter.build())
|
||||
.registerTypeAdapter<CategoryImpl>(CategoryTypeAdapter.build())
|
||||
.registerTypeAdapter<DHistory>(HistoryTypeAdapter.build())
|
||||
.registerTypeHierarchyAdapter<TrackImpl>(TrackTypeAdapter.build())
|
||||
.create()
|
||||
else -> throw Exception("Unknown backup version")
|
||||
}
|
||||
|
||||
companion object {
|
||||
internal const val version = 2
|
||||
}
|
||||
}
|
||||
@@ -7,11 +7,7 @@ package ir.armor.tachidesk.impl.backup.legacy
|
||||
* 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 com.github.salomonbrys.kotson.registerTypeAdapter
|
||||
import com.github.salomonbrys.kotson.registerTypeHierarchyAdapter
|
||||
import com.github.salomonbrys.kotson.set
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.GsonBuilder
|
||||
import com.google.gson.JsonArray
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonObject
|
||||
@@ -19,38 +15,18 @@ import eu.kanade.tachiyomi.source.LocalSource
|
||||
import ir.armor.tachidesk.impl.backup.BackupFlags
|
||||
import ir.armor.tachidesk.impl.backup.legacy.models.Backup
|
||||
import ir.armor.tachidesk.impl.backup.legacy.models.Backup.CURRENT_VERSION
|
||||
import ir.armor.tachidesk.impl.backup.legacy.models.DHistory
|
||||
import ir.armor.tachidesk.impl.backup.legacy.serializer.CategoryTypeAdapter
|
||||
import ir.armor.tachidesk.impl.backup.legacy.serializer.ChapterTypeAdapter
|
||||
import ir.armor.tachidesk.impl.backup.legacy.serializer.HistoryTypeAdapter
|
||||
import ir.armor.tachidesk.impl.backup.legacy.serializer.MangaTypeAdapter
|
||||
import ir.armor.tachidesk.impl.backup.legacy.serializer.TrackTypeAdapter
|
||||
import ir.armor.tachidesk.impl.backup.models.CategoryImpl
|
||||
import ir.armor.tachidesk.impl.backup.models.ChapterImpl
|
||||
import ir.armor.tachidesk.impl.backup.models.Manga
|
||||
import ir.armor.tachidesk.impl.backup.models.MangaImpl
|
||||
import ir.armor.tachidesk.impl.backup.models.TrackImpl
|
||||
import ir.armor.tachidesk.impl.util.GetHttpSource.getHttpSource
|
||||
import ir.armor.tachidesk.model.database.ChapterTable
|
||||
import ir.armor.tachidesk.model.database.MangaTable
|
||||
import org.jetbrains.exposed.sql.select
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
|
||||
object LegacyBackupExport {
|
||||
const val version = 2
|
||||
object LegacyBackupExport : LegacyBackupBase() {
|
||||
|
||||
private val parser: Gson = when (version) {
|
||||
2 -> GsonBuilder()
|
||||
.registerTypeAdapter<MangaImpl>(MangaTypeAdapter.build())
|
||||
.registerTypeHierarchyAdapter<ChapterImpl>(ChapterTypeAdapter.build())
|
||||
.registerTypeAdapter<CategoryImpl>(CategoryTypeAdapter.build())
|
||||
.registerTypeAdapter<DHistory>(HistoryTypeAdapter.build())
|
||||
.registerTypeHierarchyAdapter<TrackImpl>(TrackTypeAdapter.build())
|
||||
.create()
|
||||
else -> throw Exception("Unknown backup version")
|
||||
}
|
||||
|
||||
suspend fun createBackup(flags: BackupFlags): String? {
|
||||
suspend fun createLegacyBackup(flags: BackupFlags): String? {
|
||||
// Create root object
|
||||
val root = JsonObject()
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package ir.armor.tachidesk.impl.backup.legacy
|
||||
|
||||
import com.google.gson.JsonParser
|
||||
import mu.KotlinLogging
|
||||
import java.io.InputStream
|
||||
|
||||
/*
|
||||
* 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/. */
|
||||
|
||||
private val logger = KotlinLogging.logger {}
|
||||
|
||||
object LegacyBackupImport : LegacyBackupBase() {
|
||||
fun restoreLegacyBackup(sourceStream: InputStream) {
|
||||
val reader = sourceStream.bufferedReader()
|
||||
val json = JsonParser.parseReader(reader).asJsonObject
|
||||
|
||||
logger.info("$json")
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,8 @@ import ir.armor.tachidesk.impl.Search.sourceSearch
|
||||
import ir.armor.tachidesk.impl.Source.getSource
|
||||
import ir.armor.tachidesk.impl.Source.getSourceList
|
||||
import ir.armor.tachidesk.impl.backup.BackupFlags
|
||||
import ir.armor.tachidesk.impl.backup.legacy.LegacyBackupExport.createBackup
|
||||
import ir.armor.tachidesk.impl.backup.legacy.LegacyBackupExport.createLegacyBackup
|
||||
import ir.armor.tachidesk.impl.backup.legacy.LegacyBackupImport.restoreLegacyBackup
|
||||
import ir.armor.tachidesk.server.util.openInBrowser
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -325,17 +326,17 @@ object JavalinSetup {
|
||||
ctx.json(getCategoryMangaList(categoryId))
|
||||
}
|
||||
|
||||
// expects a Tachiyomi legacy backup file to be uploaded
|
||||
// expects a Tachiyomi legacy backup json to be uploaded
|
||||
app.get("/api/v1/backup/legacy/import") { ctx ->
|
||||
TODO()
|
||||
restoreLegacyBackup(ctx.bodyAsInputStream())
|
||||
}
|
||||
|
||||
// returns a Tachiyomi legacy backup file created from the current database
|
||||
// returns a Tachiyomi legacy backup json created from the current database
|
||||
app.get("/api/v1/backup/legacy/export") { ctx ->
|
||||
ctx.contentType("application/json")
|
||||
ctx.result(
|
||||
future {
|
||||
createBackup(
|
||||
createLegacyBackup(
|
||||
BackupFlags(
|
||||
includeManga = true,
|
||||
includeCategories = true,
|
||||
|
||||
Reference in New Issue
Block a user