mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-03 19:04:39 -05:00
consolidate the external backup api
This commit is contained in:
@@ -4,6 +4,8 @@ import io.javalin.http.Context
|
|||||||
import suwayomi.tachidesk.manga.impl.backup.BackupFlags
|
import suwayomi.tachidesk.manga.impl.backup.BackupFlags
|
||||||
import suwayomi.tachidesk.manga.impl.backup.legacy.LegacyBackupExport
|
import suwayomi.tachidesk.manga.impl.backup.legacy.LegacyBackupExport
|
||||||
import suwayomi.tachidesk.manga.impl.backup.legacy.LegacyBackupImport
|
import suwayomi.tachidesk.manga.impl.backup.legacy.LegacyBackupImport
|
||||||
|
import suwayomi.tachidesk.manga.impl.backup.proto.ProtoBackupExport
|
||||||
|
import suwayomi.tachidesk.manga.impl.backup.proto.ProtoBackupImport
|
||||||
import suwayomi.tachidesk.server.JavalinSetup
|
import suwayomi.tachidesk.server.JavalinSetup
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
@@ -39,7 +41,7 @@ object BackupController {
|
|||||||
ctx.contentType("application/json")
|
ctx.contentType("application/json")
|
||||||
ctx.result(
|
ctx.result(
|
||||||
JavalinSetup.future {
|
JavalinSetup.future {
|
||||||
LegacyBackupExport.createLegacyBackup(
|
LegacyBackupExport.createBackup(
|
||||||
BackupFlags(
|
BackupFlags(
|
||||||
includeManga = true,
|
includeManga = true,
|
||||||
includeCategories = true,
|
includeCategories = true,
|
||||||
@@ -55,13 +57,12 @@ object BackupController {
|
|||||||
/** returns a Tachiyomi legacy backup json created from the current database as a file */
|
/** returns a Tachiyomi legacy backup json created from the current database as a file */
|
||||||
fun legacyExportFile(ctx: Context) {
|
fun legacyExportFile(ctx: Context) {
|
||||||
ctx.contentType("application/json")
|
ctx.contentType("application/json")
|
||||||
val sdf = SimpleDateFormat("yyyy-MM-dd_HH-mm")
|
val currentDate = SimpleDateFormat("yyyy-MM-dd_HH-mm").format(Date())
|
||||||
val currentDate = sdf.format(Date())
|
|
||||||
|
|
||||||
ctx.header("Content-Disposition", "attachment; filename=\"tachidesk_$currentDate.json\"")
|
ctx.header("Content-Disposition", """attachment; filename="tachidesk_$currentDate.json"""")
|
||||||
ctx.result(
|
ctx.result(
|
||||||
JavalinSetup.future {
|
JavalinSetup.future {
|
||||||
LegacyBackupExport.createLegacyBackup(
|
LegacyBackupExport.createBackup(
|
||||||
BackupFlags(
|
BackupFlags(
|
||||||
includeManga = true,
|
includeManga = true,
|
||||||
includeCategories = true,
|
includeCategories = true,
|
||||||
@@ -75,29 +76,29 @@ object BackupController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** expects a Tachiyomi protobuf backup in the body */
|
/** expects a Tachiyomi protobuf backup in the body */
|
||||||
fun protobufImport(ctx: Context) { // TODO
|
fun protobufImport(ctx: Context) {
|
||||||
ctx.result(
|
ctx.result(
|
||||||
JavalinSetup.future {
|
JavalinSetup.future {
|
||||||
LegacyBackupImport.performRestore(ctx.bodyAsInputStream())
|
ProtoBackupImport.performRestore(ctx.bodyAsInputStream())
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** expects a Tachiyomi protobuf backup as a file upload, the file must be named "backup.proto" */
|
/** expects a Tachiyomi protobuf backup as a file upload, the file must be named "backup.proto.gz" */
|
||||||
fun protobufImportFile(ctx: Context) { // TODO
|
fun protobufImportFile(ctx: Context) {
|
||||||
ctx.result(
|
ctx.result(
|
||||||
JavalinSetup.future {
|
JavalinSetup.future {
|
||||||
LegacyBackupImport.performRestore(ctx.uploadedFile("backup.json")!!.content)
|
ProtoBackupImport.performRestore(ctx.uploadedFile("backup.proto.gz")!!.content)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** returns a Tachiyomi protobuf backup created from the current database as a body */
|
/** returns a Tachiyomi protobuf backup created from the current database as a body */
|
||||||
fun protobufExport(ctx: Context) { // TODO
|
fun protobufExport(ctx: Context) { // TODO
|
||||||
ctx.contentType("application/json")
|
ctx.contentType("application/octet-stream")
|
||||||
ctx.result(
|
ctx.result(
|
||||||
JavalinSetup.future {
|
JavalinSetup.future {
|
||||||
LegacyBackupExport.createLegacyBackup(
|
ProtoBackupExport.createBackup(
|
||||||
BackupFlags(
|
BackupFlags(
|
||||||
includeManga = true,
|
includeManga = true,
|
||||||
includeCategories = true,
|
includeCategories = true,
|
||||||
@@ -110,16 +111,15 @@ object BackupController {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** returns a Tachiyomi legacy backup json created from the current database as a file */
|
/** returns a Tachiyomi protobuf backup created from the current database as a file */
|
||||||
fun protobufExportFile(ctx: Context) {
|
fun protobufExportFile(ctx: Context) {
|
||||||
ctx.contentType("application/json")
|
ctx.contentType("application/octet-stream")
|
||||||
val sdf = SimpleDateFormat("yyyy-MM-dd_HH-mm")
|
val currentDate = SimpleDateFormat("yyyy-MM-dd_HH-mm").format(Date())
|
||||||
val currentDate = sdf.format(Date())
|
|
||||||
|
|
||||||
ctx.header("Content-Disposition", "attachment; filename=\"tachidesk_$currentDate.json\"")
|
ctx.header("Content-Disposition", """attachment; filename="tachidesk_$currentDate.proto.gz"""")
|
||||||
ctx.result(
|
ctx.result(
|
||||||
JavalinSetup.future {
|
JavalinSetup.future {
|
||||||
LegacyBackupExport.createLegacyBackup(
|
ProtoBackupExport.createBackup(
|
||||||
BackupFlags(
|
BackupFlags(
|
||||||
includeManga = true,
|
includeManga = true,
|
||||||
includeCategories = true,
|
includeCategories = true,
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import suwayomi.tachidesk.manga.model.table.MangaTable
|
|||||||
|
|
||||||
object LegacyBackupExport : LegacyBackupBase() {
|
object LegacyBackupExport : LegacyBackupBase() {
|
||||||
|
|
||||||
suspend fun createLegacyBackup(flags: BackupFlags): String? {
|
suspend fun createBackup(flags: BackupFlags): ByteArray {
|
||||||
// Create root object
|
// Create root object
|
||||||
val root = JsonObject()
|
val root = JsonObject()
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ object LegacyBackupExport : LegacyBackupBase() {
|
|||||||
backupExtensionInfo(extensionEntries, extensions)
|
backupExtensionInfo(extensionEntries, extensions)
|
||||||
}
|
}
|
||||||
|
|
||||||
return parser.toJson(root)
|
return parser.toJson(root).encodeToByteArray()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun backupMangaObject(manga: Manga, options: BackupFlags): JsonElement {
|
private fun backupMangaObject(manga: Manga, options: BackupFlags): JsonElement {
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package suwayomi.tachidesk.manga.impl.backup.proto
|
package suwayomi.tachidesk.manga.impl.backup.proto
|
||||||
|
|
||||||
|
import suwayomi.tachidesk.manga.impl.backup.BackupFlags
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) Contributors to the Suwayomi project
|
* Copyright (C) Contributors to the Suwayomi project
|
||||||
*
|
*
|
||||||
@@ -8,4 +10,7 @@ package suwayomi.tachidesk.manga.impl.backup.proto
|
|||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
object ProtoBackupExport {
|
object ProtoBackupExport {
|
||||||
|
suspend fun createBackup(flags: BackupFlags): String? {
|
||||||
|
TODO()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user