diff --git a/common/database/database_update.cpp b/common/database/database_update.cpp index cd33d2abfe..0542d130dd 100644 --- a/common/database/database_update.cpp +++ b/common/database/database_update.cpp @@ -169,7 +169,10 @@ bool DatabaseUpdate::UpdateManifest( LogSys.EnableMySQLErrorLogs(); LogInfo("{}", Strings::Repeat("-", BREAK_LENGTH)); - if (!missing_migrations.empty()) { + if (!missing_migrations.empty() && m_skip_backup) { + LogInfo("Skipping database backup"); + } + else if (!missing_migrations.empty()) { LogInfo("Automatically backing up database before applying updates"); LogInfo("{}", Strings::Repeat("-", BREAK_LENGTH)); auto s = DatabaseDumpService(); @@ -271,6 +274,13 @@ DatabaseUpdate *DatabaseUpdate::SetContentDatabase(Database *db) return this; } +DatabaseUpdate *DatabaseUpdate::SetSkipBackup(bool skip) +{ + m_skip_backup = skip; + + return this; +} + bool DatabaseUpdate::CheckVersionsUpToDate(DatabaseVersion v, DatabaseVersion b) { LogInfo("{}", Strings::Repeat("-", BREAK_LENGTH)); diff --git a/common/database/database_update.h b/common/database/database_update.h index 0ba7b8df5b..be820a9e8d 100644 --- a/common/database/database_update.h +++ b/common/database/database_update.h @@ -29,12 +29,15 @@ class DatabaseUpdate { DatabaseUpdate *SetDatabase(Database *db); DatabaseUpdate *SetContentDatabase(Database *db); + DatabaseUpdate *SetSkipBackup(bool skip); bool HasPendingUpdates(); private: + bool m_skip_backup = false; Database *m_database; Database *m_content_database; static bool CheckVersionsUpToDate(DatabaseVersion v, DatabaseVersion b); void InjectBotsVersionColumn(); + }; #endif //EQEMU_DATABASE_UPDATE_H diff --git a/world/cli/database_dump.cpp b/world/cli/database_dump.cpp index 0465396886..e9068d63b9 100644 --- a/world/cli/database_dump.cpp +++ b/world/cli/database_dump.cpp @@ -24,12 +24,12 @@ void WorldserverCLI::DatabaseDump(int argc, char **argv, argh::parser &cmd, std: "--compress" }; - EQEmuCommand::ValidateCmdInput(arguments, options, cmd, argc, argv); - if (cmd[{"-h", "--help"}]) { return; } + EQEmuCommand::ValidateCmdInput(arguments, options, cmd, argc, argv); + auto s = new DatabaseDumpService(); bool dump_all = cmd[{"-a", "--all"}]; diff --git a/world/cli/database_updates.cpp b/world/cli/database_updates.cpp index f85316de58..f967349fa9 100644 --- a/world/cli/database_updates.cpp +++ b/world/cli/database_updates.cpp @@ -4,12 +4,17 @@ void WorldserverCLI::DatabaseUpdates(int argc, char **argv, argh::parser &cmd, s { description = "Runs database updates manually"; + std::vector options = { + "--skip-backup", + }; + if (cmd[{"-h", "--help"}]) { return; } DatabaseUpdate update; update.SetDatabase(&database) + ->SetSkipBackup(cmd[{"--skip-backup"}] ) ->SetContentDatabase(&content_db) ->CheckDbUpdates(); }