From 7b5d96189e65df5b0bde633bfd79be55580f06c7 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Wed, 15 Oct 2025 01:40:46 +0200 Subject: [PATCH] Feature/automatic backup flags (#1702) * Add backup flags to auto backups * Mark ServerConfig properties as deprecated --------- Co-authored-by: Mitchell Syer --- .../manga/impl/backup/BackupFlags.kt | 13 ++++- .../suwayomi/tachidesk/server/ServerConfig.kt | 50 ++++++++++++++++++- .../impl/backup/proto/ProtoBackupExport.kt | 2 +- 3 files changed, 62 insertions(+), 3 deletions(-) rename server/{ => server-config}/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/BackupFlags.kt (74%) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/BackupFlags.kt b/server/server-config/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/BackupFlags.kt similarity index 74% rename from server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/BackupFlags.kt rename to server/server-config/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/BackupFlags.kt index adfdb8f3..f0dc1d89 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/BackupFlags.kt +++ b/server/server-config/src/main/kotlin/suwayomi/tachidesk/manga/impl/backup/BackupFlags.kt @@ -1,6 +1,6 @@ package suwayomi.tachidesk.manga.impl.backup -import suwayomi.tachidesk.manga.impl.backup.proto.models.Backup +import suwayomi.tachidesk.server.serverConfig /* * Copyright (C) Contributors to the Suwayomi project @@ -50,5 +50,16 @@ data class BackupFlags( includeClientData = partialFlags?.includeClientData ?: DEFAULT.includeClientData, includeServerSettings = partialFlags?.includeServerSettings ?: DEFAULT.includeServerSettings, ) + + fun fromServerConfig(): BackupFlags = + BackupFlags( + includeManga = serverConfig.autoBackupIncludeManga.value, + includeCategories = serverConfig.autoBackupIncludeCategories.value, + includeChapters = serverConfig.autoBackupIncludeChapters.value, + includeTracking = serverConfig.autoBackupIncludeTracking.value, + includeHistory = serverConfig.autoBackupIncludeHistory.value, + includeClientData = serverConfig.autoBackupIncludeClientData.value, + includeServerSettings = serverConfig.autoBackupIncludeServerSettings.value, + ) } } diff --git a/server/server-config/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt b/server/server-config/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt index 6521e042..5ccfc930 100644 --- a/server/server-config/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt +++ b/server/server-config/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt @@ -34,6 +34,7 @@ import suwayomi.tachidesk.graphql.types.SettingsDownloadConversionType import suwayomi.tachidesk.graphql.types.WebUIChannel import suwayomi.tachidesk.graphql.types.WebUIFlavor import suwayomi.tachidesk.graphql.types.WebUIInterface +import suwayomi.tachidesk.manga.impl.backup.BackupFlags import suwayomi.tachidesk.manga.impl.backup.proto.models.BackupSettingsDownloadConversionType import suwayomi.tachidesk.manga.impl.extension.repoMatchRegex import suwayomi.tachidesk.server.settings.BooleanSetting @@ -204,6 +205,7 @@ class ServerConfig( description = "Exclude entries with unread chapters from auto-download", ) + @Deprecated("Will get removed", replaceWith = ReplaceWith("autoDownloadNewChaptersLimit")) val autoDownloadAheadLimit: MutableStateFlow by MigratedConfigValue( protoNumber = 19, defaultValue = 0, @@ -302,6 +304,7 @@ class ServerConfig( description = "Update manga metadata and thumbnail along with the chapter list update during the library update.", ) + @Deprecated("Will get removed", replaceWith = ReplaceWith("authMode")) val basicAuthEnabled: MutableStateFlow by MigratedConfigValue( protoNumber = 29, defaultValue = false, @@ -348,6 +351,7 @@ class ServerConfig( group = SettingGroup.MISC, ) + @Deprecated("Removed - does not do anything") val gqlDebugLogsEnabled: MutableStateFlow by MigratedConfigValue( protoNumber = 33, defaultValue = false, @@ -790,13 +794,56 @@ class ServerConfig( excludeFromBackup = true, ) + val autoBackupIncludeManga: MutableStateFlow by BooleanSetting( + protoNumber = 76, + group = SettingGroup.BACKUP, + defaultValue = BackupFlags.DEFAULT.includeManga, + ) + + val autoBackupIncludeCategories: MutableStateFlow by BooleanSetting( + protoNumber = 77, + group = SettingGroup.BACKUP, + defaultValue = BackupFlags.DEFAULT.includeCategories, + ) + + val autoBackupIncludeChapters: MutableStateFlow by BooleanSetting( + protoNumber = 78, + group = SettingGroup.BACKUP, + defaultValue = BackupFlags.DEFAULT.includeChapters, + ) + + val autoBackupIncludeTracking: MutableStateFlow by BooleanSetting( + protoNumber = 79, + group = SettingGroup.BACKUP, + defaultValue = BackupFlags.DEFAULT.includeTracking, + ) + + val autoBackupIncludeHistory: MutableStateFlow by BooleanSetting( + protoNumber = 80, + group = SettingGroup.BACKUP, + defaultValue = BackupFlags.DEFAULT.includeHistory, + ) + + val autoBackupIncludeClientData: MutableStateFlow by BooleanSetting( + protoNumber = 81, + group = SettingGroup.BACKUP, + defaultValue = BackupFlags.DEFAULT.includeClientData, + ) + + val autoBackupIncludeServerSettings: MutableStateFlow by BooleanSetting( + protoNumber = 82, + group = SettingGroup.BACKUP, + defaultValue = BackupFlags.DEFAULT.includeServerSettings, + ) + /** ****************************************************************** **/ /** **/ /** Renamed settings **/ /** **/ - /** ****************************************************************** **/ + + @Deprecated("Removed - prefer authUsername", replaceWith = ReplaceWith("authUsername")) val basicAuthUsername: MutableStateFlow by MigratedConfigValue( protoNumber = 99991, defaultValue = "", @@ -811,6 +858,7 @@ class ServerConfig( setMigrated = { authUsername.value = it }, ) + @Deprecated("Removed - prefer authPassword", replaceWith = ReplaceWith("authPassword")) val basicAuthPassword: MutableStateFlow by MigratedConfigValue( protoNumber = 99992, defaultValue = "", 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 8d9679b4..cabf6742 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 @@ -98,7 +98,7 @@ object ProtoBackupExport : ProtoBackupBase() { private fun createAutomatedBackup() { logger.info { "Creating automated backup..." } - createBackup(BackupFlags.DEFAULT).use { input -> + createBackup(BackupFlags.fromServerConfig()).use { input -> val automatedBackupDir = File(applicationDirs.automatedBackupRoot) automatedBackupDir.mkdirs()