mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-04 03:14:40 -05:00
Feature/backup import add backup flags (#1697)
* Add backup flags to backup restore * Cleanup default backup flags handling * Optionally exclude manga from backup
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
package suwayomi.tachidesk.graphql.mutations
|
||||
|
||||
import com.expediagroup.graphql.generator.annotations.GraphQLDeprecated
|
||||
import io.javalin.http.UploadedFile
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.withTimeout
|
||||
import suwayomi.tachidesk.graphql.directives.RequireAuth
|
||||
import suwayomi.tachidesk.graphql.server.TemporaryFileStorage
|
||||
import suwayomi.tachidesk.graphql.types.BackupRestoreStatus
|
||||
import suwayomi.tachidesk.graphql.types.PartialBackupFlags
|
||||
import suwayomi.tachidesk.graphql.types.toStatus
|
||||
import suwayomi.tachidesk.manga.impl.backup.BackupFlags
|
||||
import suwayomi.tachidesk.manga.impl.backup.proto.ProtoBackupExport
|
||||
@@ -19,6 +21,7 @@ class BackupMutation {
|
||||
data class RestoreBackupInput(
|
||||
val clientMutationId: String? = null,
|
||||
val backup: UploadedFile,
|
||||
val flags: PartialBackupFlags? = null,
|
||||
)
|
||||
|
||||
data class RestoreBackupPayload(
|
||||
@@ -29,10 +32,14 @@ class BackupMutation {
|
||||
|
||||
@RequireAuth
|
||||
fun restoreBackup(input: RestoreBackupInput): CompletableFuture<RestoreBackupPayload> {
|
||||
val (clientMutationId, backup) = input
|
||||
val (clientMutationId, backup, flags) = input
|
||||
|
||||
return future {
|
||||
val restoreId = ProtoBackupImport.restore(backup.content())
|
||||
val restoreId =
|
||||
ProtoBackupImport.restore(
|
||||
backup.content(),
|
||||
BackupFlags.fromPartial(flags),
|
||||
)
|
||||
|
||||
withTimeout(10.seconds) {
|
||||
ProtoBackupImport.notifyFlow.first {
|
||||
@@ -46,11 +53,18 @@ class BackupMutation {
|
||||
|
||||
data class CreateBackupInput(
|
||||
val clientMutationId: String? = null,
|
||||
val flags: PartialBackupFlags? = null,
|
||||
@GraphQLDeprecated("Will get removed", replaceWith = ReplaceWith("flags"))
|
||||
val includeChapters: Boolean? = null,
|
||||
@GraphQLDeprecated("Will get removed", replaceWith = ReplaceWith("flags"))
|
||||
val includeCategories: Boolean? = null,
|
||||
@GraphQLDeprecated("Will get removed", replaceWith = ReplaceWith("flags"))
|
||||
val includeTracking: Boolean? = null,
|
||||
@GraphQLDeprecated("Will get removed", replaceWith = ReplaceWith("flags"))
|
||||
val includeHistory: Boolean? = null,
|
||||
@GraphQLDeprecated("Will get removed", replaceWith = ReplaceWith("flags"))
|
||||
val includeClientData: Boolean? = null,
|
||||
@GraphQLDeprecated("Will get removed", replaceWith = ReplaceWith("flags"))
|
||||
val includeServerSettings: Boolean? = null,
|
||||
)
|
||||
|
||||
@@ -65,15 +79,19 @@ class BackupMutation {
|
||||
|
||||
val backup =
|
||||
ProtoBackupExport.createBackup(
|
||||
BackupFlags(
|
||||
includeManga = true,
|
||||
includeCategories = input?.includeCategories ?: true,
|
||||
includeChapters = input?.includeChapters ?: true,
|
||||
includeTracking = input?.includeTracking ?: true,
|
||||
includeHistory = input?.includeHistory ?: true,
|
||||
includeClientData = input?.includeClientData ?: true,
|
||||
includeServerSettings = input?.includeServerSettings ?: true,
|
||||
),
|
||||
if (input?.flags != null) {
|
||||
BackupFlags.fromPartial(input.flags)
|
||||
} else {
|
||||
BackupFlags(
|
||||
includeManga = BackupFlags.DEFAULT.includeManga,
|
||||
includeCategories = input?.includeCategories ?: BackupFlags.DEFAULT.includeCategories,
|
||||
includeChapters = input?.includeChapters ?: BackupFlags.DEFAULT.includeChapters,
|
||||
includeTracking = input?.includeTracking ?: BackupFlags.DEFAULT.includeTracking,
|
||||
includeHistory = input?.includeHistory ?: BackupFlags.DEFAULT.includeHistory,
|
||||
includeClientData = input?.includeClientData ?: BackupFlags.DEFAULT.includeClientData,
|
||||
includeServerSettings = input?.includeServerSettings ?: BackupFlags.DEFAULT.includeServerSettings,
|
||||
)
|
||||
},
|
||||
)
|
||||
|
||||
TemporaryFileStorage.saveFile(filename, backup)
|
||||
|
||||
Reference in New Issue
Block a user