diff --git a/common/database/database_dump_service.cpp b/common/database/database_dump_service.cpp index 8c0ad1c84..be55159d6 100644 --- a/common/database/database_dump_service.cpp +++ b/common/database/database_dump_service.cpp @@ -279,6 +279,11 @@ void DatabaseDumpService::DatabaseDump() } } + if (IsDumpStaticInstanceData()) { + tables_to_dump += "instance_list"; + options += " --no-create-info --where=\"instance_list.is_global > 0 and instance_list.never_expires > 0\""; + } + if (!dump_descriptor.empty()) { SetDumpFileName(GetDumpFileName() + dump_descriptor); } @@ -606,3 +611,13 @@ void DatabaseDumpService::RemoveCredentialsFile() std::filesystem::remove(CREDENTIALS_FILE); } } + +bool DatabaseDumpService::IsDumpStaticInstanceData() +{ + return dump_static_instance_data; +} + +void DatabaseDumpService::SetDumpStaticInstanceData(bool b) +{ + dump_static_instance_data = b; +} diff --git a/common/database/database_dump_service.h b/common/database/database_dump_service.h index e60c04d95..568eac07f 100644 --- a/common/database/database_dump_service.h +++ b/common/database/database_dump_service.h @@ -58,6 +58,9 @@ public: bool IsDumpMercTables() const; void SetDumpMercTables(bool dump_bot_tables); + void SetDumpStaticInstanceData(bool b); + bool IsDumpStaticInstanceData(); + private: bool dump_all_tables = false; bool dump_state_tables = false; @@ -73,6 +76,8 @@ private: bool dump_drop_table_syntax_only = false; bool dump_bot_tables = false; bool dump_merc_tables = false; + bool dump_static_instance_data = false; + std::string dump_path; std::string dump_file_name; diff --git a/utils/sql/peq-dump/peq-dump.sh b/utils/sql/peq-dump/peq-dump.sh index 7eaffdc6a..cdab383ad 100755 --- a/utils/sql/peq-dump/peq-dump.sh +++ b/utils/sql/peq-dump/peq-dump.sh @@ -44,7 +44,7 @@ echo "Generating [create_*] table exports..." bash -c "${world_bin} database:dump --login-tables --table-structure-only --dump-output-to-console | sed 's/ AUTO_INCREMENT=[0-9]*\b//g' > ${dump_path}create_tables_login.sql" bash -c "${world_bin} database:dump --player-tables --table-structure-only --dump-output-to-console | sed 's/ AUTO_INCREMENT=[0-9]*\b//g' > ${dump_path}create_tables_player.sql" bash -c "${world_bin} database:dump --state-tables --table-structure-only --dump-output-to-console | sed 's/ AUTO_INCREMENT=[0-9]*\b//g' > ${dump_path}create_tables_state.sql" -echo 'REPLACE INTO `instance_list` VALUES (1,25,1,1,0,0,1),(2,25,2,1,0,0,1),(3,151,1,1,0,0,1),(4,114,1,1,0,0,1),(5,344,1,1,0,0,1),(6,202,0,1,0,0,1);' >> "${dump_path}create_tables_state.sql" +bash -c "${world_bin} database:dump --static-instance-data --dump-output-to-console >> ${dump_path}create_tables_state.sql" bash -c "${world_bin} database:dump --query-serv-tables --table-structure-only --dump-output-to-console | sed 's/ AUTO_INCREMENT=[0-9]*\b//g' > ${dump_path}create_tables_queryserv.sql" # with content diff --git a/world/cli/database_dump.cpp b/world/cli/database_dump.cpp index 18bd661c0..046539688 100644 --- a/world/cli/database_dump.cpp +++ b/world/cli/database_dump.cpp @@ -15,6 +15,7 @@ void WorldserverCLI::DatabaseDump(int argc, char **argv, argh::parser &cmd, std: "--state-tables", "--system-tables", "--query-serv-tables", + "--static-instance-data", "--table-structure-only", "--table-lock", "--dump-path=", @@ -51,6 +52,7 @@ void WorldserverCLI::DatabaseDump(int argc, char **argv, argh::parser &cmd, std: s->SetDumpWithCompression(cmd[{"--compress"}]); s->SetDumpOutputToConsole(cmd[{"--dump-output-to-console"}]); s->SetDumpDropTableSyntaxOnly(cmd[{"--drop-table-syntax-only"}]); + s->SetDumpStaticInstanceData(cmd[{"--static-instance-data"}]); s->DatabaseDump(); }