mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-14 15:41:30 +00:00
Implement database dump service
This commit is contained in:
parent
1577f2823b
commit
8d252dfd9a
@ -9,6 +9,7 @@ SET(common_sources
|
|||||||
crash.cpp
|
crash.cpp
|
||||||
crc16.cpp
|
crc16.cpp
|
||||||
crc32.cpp
|
crc32.cpp
|
||||||
|
database/database_dump_service.cpp
|
||||||
database.cpp
|
database.cpp
|
||||||
database_conversions.cpp
|
database_conversions.cpp
|
||||||
database_instances.cpp
|
database_instances.cpp
|
||||||
@ -31,6 +32,7 @@ SET(common_sources
|
|||||||
event_sub.cpp
|
event_sub.cpp
|
||||||
extprofile.cpp
|
extprofile.cpp
|
||||||
faction.cpp
|
faction.cpp
|
||||||
|
file_util.cpp
|
||||||
guild_base.cpp
|
guild_base.cpp
|
||||||
guilds.cpp
|
guilds.cpp
|
||||||
inventory_profile.cpp
|
inventory_profile.cpp
|
||||||
@ -120,6 +122,7 @@ SET(common_headers
|
|||||||
cli/argh.h
|
cli/argh.h
|
||||||
cli/eqemu_command_handler.h
|
cli/eqemu_command_handler.h
|
||||||
cli/terminal_color.hpp
|
cli/terminal_color.hpp
|
||||||
|
database/database_dump_service.h
|
||||||
data_verification.h
|
data_verification.h
|
||||||
database.h
|
database.h
|
||||||
database_schema.h
|
database_schema.h
|
||||||
@ -150,6 +153,7 @@ SET(common_headers
|
|||||||
event_sub.h
|
event_sub.h
|
||||||
extprofile.h
|
extprofile.h
|
||||||
faction.h
|
faction.h
|
||||||
|
file_util.h
|
||||||
features.h
|
features.h
|
||||||
fixed_memory_hash_set.h
|
fixed_memory_hash_set.h
|
||||||
fixed_memory_variable_hash_set.h
|
fixed_memory_variable_hash_set.h
|
||||||
|
|||||||
@ -96,7 +96,7 @@ namespace EQEmuCommand {
|
|||||||
"\nCommand" <<
|
"\nCommand" <<
|
||||||
termcolor::reset << "\n\n" <<
|
termcolor::reset << "\n\n" <<
|
||||||
termcolor::green << argv[1] << arguments_string << termcolor::reset << "\n" <<
|
termcolor::green << argv[1] << arguments_string << termcolor::reset << "\n" <<
|
||||||
termcolor::yellow << (!options_string.empty() ? "\nOptions\n" : "") <<
|
termcolor::yellow << (!options_string.empty() ? "\nOptions\n\n" : "") <<
|
||||||
termcolor::reset << termcolor::cyan << options_string << termcolor::reset;
|
termcolor::reset << termcolor::cyan << options_string << termcolor::reset;
|
||||||
|
|
||||||
std::cout << command_string.str() << std::endl;
|
std::cout << command_string.str() << std::endl;
|
||||||
|
|||||||
77
common/database/database_dump_service.h
Normal file
77
common/database/database_dump_service.h
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
/**
|
||||||
|
* EQEmulator: Everquest Server Emulator
|
||||||
|
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; version 2 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||||
|
* are required to give you total support for your newly bought product;
|
||||||
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef EQEMU_DATABASE_DUMP_SERVICE_H
|
||||||
|
#define EQEMU_DATABASE_DUMP_SERVICE_H
|
||||||
|
|
||||||
|
|
||||||
|
class DatabaseDumpService {
|
||||||
|
public:
|
||||||
|
void Dump();
|
||||||
|
bool IsDumpAllTables() const;
|
||||||
|
void SetDumpAllTables(bool dump_all_tables);
|
||||||
|
bool IsDumpWithNoData() const;
|
||||||
|
void SetDumpWithNoData(bool dump_with_no_data);
|
||||||
|
bool IsDumpSystemTables() const;
|
||||||
|
void SetDumpSystemTables(bool dump_system_tables);
|
||||||
|
bool IsDumpContentTables() const;
|
||||||
|
void SetDumpContentTables(bool dump_content_tables);
|
||||||
|
bool IsDumpPlayerTables() const;
|
||||||
|
void SetDumpPlayerTables(bool dump_player_tables);
|
||||||
|
bool IsDumpLoginServerTables() const;
|
||||||
|
void SetDumpLoginServerTables(bool dump_login_server_tables);
|
||||||
|
bool IsDumpNoTableLock() const;
|
||||||
|
void SetDumpNoTableLock(bool dump_no_table_lock);
|
||||||
|
bool IsDumpWithCompression() const;
|
||||||
|
void SetDumpWithCompression(bool dump_with_compression);
|
||||||
|
const std::string &GetDumpPath() const;
|
||||||
|
void SetDumpPath(const std::string &dump_path);
|
||||||
|
const std::string &GetDumpFileName() const;
|
||||||
|
void SetDumpFileName(const std::string &dump_file_name);
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool dump_all_tables;
|
||||||
|
bool dump_system_tables;
|
||||||
|
bool dump_content_tables;
|
||||||
|
bool dump_player_tables;
|
||||||
|
bool dump_login_server_tables;
|
||||||
|
bool dump_with_no_data;
|
||||||
|
bool dump_no_table_lock;
|
||||||
|
bool dump_with_compression;
|
||||||
|
std::string dump_path;
|
||||||
|
std::string dump_file_name;
|
||||||
|
|
||||||
|
std::string execute(const std::string &cmd, bool return_result);
|
||||||
|
bool IsMySQLInstalled();
|
||||||
|
std::string GetMySQLVersion();
|
||||||
|
std::string GetBaseMySQLDumpCommand();
|
||||||
|
std::string GetPlayerTablesList();
|
||||||
|
std::string GetSystemTablesList();
|
||||||
|
std::string GetContentTablesList();
|
||||||
|
std::string GetLoginTableList();
|
||||||
|
bool IsTarAvailable();
|
||||||
|
bool IsRarAvailable();
|
||||||
|
bool HasCompressionBinary();
|
||||||
|
std::string GetDumpFileNameWithPath();
|
||||||
|
std::string GetSetDumpPath();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif //EQEMU_DATABASE_DUMP_SERVICE_H
|
||||||
67
common/file_util.cpp
Normal file
67
common/file_util.cpp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
/**
|
||||||
|
* EQEmulator: Everquest Server Emulator
|
||||||
|
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; version 2 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||||
|
* are required to give you total support for your newly bought product;
|
||||||
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include "file_util.h"
|
||||||
|
|
||||||
|
#ifdef _WINDOWS
|
||||||
|
#include <direct.h>
|
||||||
|
#include <conio.h>
|
||||||
|
#include <iostream>
|
||||||
|
#include <dos.h>
|
||||||
|
#include <windows.h>
|
||||||
|
#include <process.h>
|
||||||
|
#else
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param name
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
bool FileUtil::exists(const std::string &name)
|
||||||
|
{
|
||||||
|
std::ifstream f(name.c_str());
|
||||||
|
|
||||||
|
return f.good();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param directory_name
|
||||||
|
*/
|
||||||
|
void FileUtil::mkdir(const std::string& directory_name)
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifdef _WINDOWS
|
||||||
|
struct _stat st;
|
||||||
|
if (_stat(directory_name.c_str(), &st) == 0) // exists
|
||||||
|
return;
|
||||||
|
_mkdir(directory_name.c_str());
|
||||||
|
#else
|
||||||
|
struct stat st{};
|
||||||
|
if (stat(directory_name.c_str(), &st) == 0) { // exists
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
::mkdir(directory_name.c_str(), 0755);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
32
common/file_util.h
Normal file
32
common/file_util.h
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/**
|
||||||
|
* EQEmulator: Everquest Server Emulator
|
||||||
|
* Copyright (C) 2001-2020 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; version 2 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||||
|
* are required to give you total support for your newly bought product;
|
||||||
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef EQEMU_FILE_UTIL_H
|
||||||
|
#define EQEMU_FILE_UTIL_H
|
||||||
|
|
||||||
|
|
||||||
|
class FileUtil {
|
||||||
|
public:
|
||||||
|
static bool exists(const std::string &name);
|
||||||
|
static void mkdir(const std::string& directory_name);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif //EQEMU_FILE_UTIL_H
|
||||||
@ -1,57 +0,0 @@
|
|||||||
account
|
|
||||||
account_ip
|
|
||||||
account_flags
|
|
||||||
account_rewards
|
|
||||||
adventure_details
|
|
||||||
adventure_stats
|
|
||||||
buyer
|
|
||||||
char_recipe_list
|
|
||||||
character_activities
|
|
||||||
character_alt_currency
|
|
||||||
character_alternate_abilities
|
|
||||||
character_auras
|
|
||||||
character_bandolier
|
|
||||||
character_bind
|
|
||||||
character_buffs
|
|
||||||
character_corpse_items
|
|
||||||
character_corpses
|
|
||||||
character_currency
|
|
||||||
character_data
|
|
||||||
character_disciplines
|
|
||||||
character_enabledtasks
|
|
||||||
character_inspect_messages
|
|
||||||
character_item_recast
|
|
||||||
character_languages
|
|
||||||
character_leadership_abilities
|
|
||||||
character_material
|
|
||||||
character_memmed_spells
|
|
||||||
character_pet_buffs
|
|
||||||
character_pet_info
|
|
||||||
character_pet_inventory
|
|
||||||
character_potionbelt
|
|
||||||
character_skills
|
|
||||||
character_spells
|
|
||||||
character_tasks
|
|
||||||
character_tribute
|
|
||||||
completed_tasks
|
|
||||||
data_buckets
|
|
||||||
faction_values
|
|
||||||
friends
|
|
||||||
guild_bank
|
|
||||||
guild_members
|
|
||||||
guild_ranks
|
|
||||||
guild_relations
|
|
||||||
guilds
|
|
||||||
instance_list_player
|
|
||||||
inventory
|
|
||||||
inventory_snapshots
|
|
||||||
keyring
|
|
||||||
mail
|
|
||||||
player_titlesets
|
|
||||||
quest_globals
|
|
||||||
sharedbank
|
|
||||||
timers
|
|
||||||
titles
|
|
||||||
trader
|
|
||||||
trader_audit
|
|
||||||
zone_flags"
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
command_settings
|
|
||||||
inventory_versions
|
|
||||||
launcher
|
|
||||||
rule_sets
|
|
||||||
rule_values
|
|
||||||
variables
|
|
||||||
@ -1,113 +0,0 @@
|
|||||||
aa_ability
|
|
||||||
aa_actions
|
|
||||||
aa_effects
|
|
||||||
aa_rank_effects
|
|
||||||
aa_rank_prereqs
|
|
||||||
aa_ranks
|
|
||||||
aa_required_level_cost
|
|
||||||
adventure_template
|
|
||||||
adventure_template_entry
|
|
||||||
adventure_template_entry_flavor
|
|
||||||
altadv_vars
|
|
||||||
alternate_currency
|
|
||||||
auras
|
|
||||||
base_data
|
|
||||||
blocked_spells
|
|
||||||
books
|
|
||||||
bug_reports
|
|
||||||
char_create_combinations
|
|
||||||
char_create_point_allocations
|
|
||||||
class_skill
|
|
||||||
damageshieldtypes
|
|
||||||
data_buckets
|
|
||||||
db_str
|
|
||||||
doors
|
|
||||||
eqtime
|
|
||||||
faction_base_data
|
|
||||||
faction_list
|
|
||||||
faction_list_mod
|
|
||||||
fear_hints
|
|
||||||
fishing
|
|
||||||
forage
|
|
||||||
global_loot
|
|
||||||
goallists
|
|
||||||
graveyard
|
|
||||||
grid
|
|
||||||
grid_entries
|
|
||||||
ground_spawns
|
|
||||||
horses
|
|
||||||
instance_list
|
|
||||||
items
|
|
||||||
ip_exemptions
|
|
||||||
ldon_trap_entries
|
|
||||||
ldon_trap_templates
|
|
||||||
level_exp_mods
|
|
||||||
logsys_categories
|
|
||||||
lootdrop
|
|
||||||
lootdrop_entries
|
|
||||||
loottable
|
|
||||||
loottable_entries
|
|
||||||
merc_armorinfo
|
|
||||||
merc_buffs
|
|
||||||
merc_inventory
|
|
||||||
merc_merchant_entries
|
|
||||||
merc_merchant_template_entries
|
|
||||||
merc_merchant_templates
|
|
||||||
merc_name_types
|
|
||||||
merc_npc_types
|
|
||||||
merc_spell_list_entries
|
|
||||||
merc_spell_lists
|
|
||||||
merc_stance_entries
|
|
||||||
merc_stats
|
|
||||||
merc_subtypes
|
|
||||||
merc_templates
|
|
||||||
merc_types
|
|
||||||
merc_weaponinfo
|
|
||||||
merchantlist
|
|
||||||
mercs
|
|
||||||
name_filter
|
|
||||||
npc_emotes
|
|
||||||
npc_faction
|
|
||||||
npc_faction_entries
|
|
||||||
npc_scale_global_base
|
|
||||||
npc_spells
|
|
||||||
npc_spells_effects
|
|
||||||
npc_spells_effects_entries
|
|
||||||
npc_spells_entries
|
|
||||||
npc_types
|
|
||||||
npc_types_metadata
|
|
||||||
npc_types_tint
|
|
||||||
object
|
|
||||||
perl_event_export_settings
|
|
||||||
pets
|
|
||||||
pets_equipmentset
|
|
||||||
pets_equipmentset_entries
|
|
||||||
profanity_list
|
|
||||||
proximities
|
|
||||||
races
|
|
||||||
saylink
|
|
||||||
skill_caps
|
|
||||||
spawn2
|
|
||||||
spawn_condition_values
|
|
||||||
spawn_conditions
|
|
||||||
spawn_events
|
|
||||||
spawnentry
|
|
||||||
spawngroup
|
|
||||||
spells_new
|
|
||||||
start_zones
|
|
||||||
starting_items
|
|
||||||
task_activities
|
|
||||||
tasks
|
|
||||||
tasksets
|
|
||||||
titles
|
|
||||||
tradeskill_recipe
|
|
||||||
tradeskill_recipe_entries
|
|
||||||
traps
|
|
||||||
tribute_levels
|
|
||||||
tributes
|
|
||||||
veteran_reward_templates
|
|
||||||
zone
|
|
||||||
zone_points
|
|
||||||
zone_server
|
|
||||||
zone_state_dump
|
|
||||||
zoneserver_auth
|
|
||||||
@ -1,94 +0,0 @@
|
|||||||
aa_timers
|
|
||||||
account
|
|
||||||
account_flags
|
|
||||||
account_ip
|
|
||||||
account_rewards
|
|
||||||
adventure_details
|
|
||||||
adventure_members
|
|
||||||
adventure_stats
|
|
||||||
banned_ips
|
|
||||||
bugs
|
|
||||||
buyer
|
|
||||||
char_recipe_list
|
|
||||||
character_activities
|
|
||||||
character_alt_currency
|
|
||||||
character_alternate_abilities
|
|
||||||
character_auras
|
|
||||||
character_bandolier
|
|
||||||
character_bind
|
|
||||||
character_buffs
|
|
||||||
character_corpse_items
|
|
||||||
character_corpses
|
|
||||||
character_currency
|
|
||||||
character_data
|
|
||||||
character_disciplines
|
|
||||||
character_enabledtasks
|
|
||||||
character_inspect_messages
|
|
||||||
character_item_recast
|
|
||||||
character_languages
|
|
||||||
character_leadership_abilities
|
|
||||||
character_material
|
|
||||||
character_memmed_spells
|
|
||||||
character_pet_buffs
|
|
||||||
character_pet_info
|
|
||||||
character_pet_inventory
|
|
||||||
character_potionbelt
|
|
||||||
character_skills
|
|
||||||
character_spells
|
|
||||||
character_tasks
|
|
||||||
character_tribute
|
|
||||||
chatchannels
|
|
||||||
completed_tasks
|
|
||||||
discovered_items
|
|
||||||
eventlog
|
|
||||||
faction_values
|
|
||||||
friends
|
|
||||||
gm_ips
|
|
||||||
group_id
|
|
||||||
group_leaders
|
|
||||||
guild_bank
|
|
||||||
guild_members
|
|
||||||
guild_ranks
|
|
||||||
guild_relations
|
|
||||||
guilds
|
|
||||||
hackers
|
|
||||||
instance_list_player
|
|
||||||
inventory
|
|
||||||
inventory_snapshots
|
|
||||||
item_tick
|
|
||||||
keyring
|
|
||||||
launcher_zones
|
|
||||||
lfguild
|
|
||||||
mail
|
|
||||||
merchantlist_temp
|
|
||||||
object_contents
|
|
||||||
petitions
|
|
||||||
player_titlesets
|
|
||||||
qs_merchant_transaction_record
|
|
||||||
qs_merchant_transaction_record_entries
|
|
||||||
qs_player_aa_rate_hourly
|
|
||||||
qs_player_delete_record
|
|
||||||
qs_player_delete_record_entries
|
|
||||||
qs_player_events
|
|
||||||
qs_player_handin_record
|
|
||||||
qs_player_handin_record_entries
|
|
||||||
qs_player_move_record
|
|
||||||
qs_player_move_record_entries
|
|
||||||
qs_player_npc_kill_record
|
|
||||||
qs_player_npc_kill_record_entries
|
|
||||||
qs_player_speech
|
|
||||||
qs_player_trade_record
|
|
||||||
qs_player_trade_record_entries
|
|
||||||
quest_globals
|
|
||||||
raid_details
|
|
||||||
raid_leaders
|
|
||||||
raid_members
|
|
||||||
reports
|
|
||||||
respawn_times
|
|
||||||
sharedbank
|
|
||||||
spell_buckets
|
|
||||||
spell_globals
|
|
||||||
timers
|
|
||||||
trader
|
|
||||||
trader_audit
|
|
||||||
zone_flags
|
|
||||||
@ -24,6 +24,7 @@
|
|||||||
#include "../common/version.h"
|
#include "../common/version.h"
|
||||||
#include "worlddb.h"
|
#include "worlddb.h"
|
||||||
#include "../common/database_schema.h"
|
#include "../common/database_schema.h"
|
||||||
|
#include "../common/database/database_dump_service.h"
|
||||||
|
|
||||||
namespace WorldserverCommandHandler {
|
namespace WorldserverCommandHandler {
|
||||||
|
|
||||||
@ -51,6 +52,7 @@ namespace WorldserverCommandHandler {
|
|||||||
function_map["database:version"] = &WorldserverCommandHandler::DatabaseVersion;
|
function_map["database:version"] = &WorldserverCommandHandler::DatabaseVersion;
|
||||||
function_map["database:set-account-status"] = &WorldserverCommandHandler::DatabaseSetAccountStatus;
|
function_map["database:set-account-status"] = &WorldserverCommandHandler::DatabaseSetAccountStatus;
|
||||||
function_map["database:schema"] = &WorldserverCommandHandler::DatabaseGetSchema;
|
function_map["database:schema"] = &WorldserverCommandHandler::DatabaseGetSchema;
|
||||||
|
function_map["database:dump"] = &WorldserverCommandHandler::DatabaseDump;
|
||||||
|
|
||||||
EQEmuCommand::HandleMenu(function_map, cmd, argc, argv);
|
EQEmuCommand::HandleMenu(function_map, cmd, argc, argv);
|
||||||
}
|
}
|
||||||
@ -145,7 +147,7 @@ namespace WorldserverCommandHandler {
|
|||||||
*/
|
*/
|
||||||
void DatabaseGetSchema(int argc, char **argv, argh::parser &cmd, std::string &description)
|
void DatabaseGetSchema(int argc, char **argv, argh::parser &cmd, std::string &description)
|
||||||
{
|
{
|
||||||
description = "Displays server database schema";
|
description = "Displays server database schema";
|
||||||
|
|
||||||
if (cmd[{"-h", "--help"}]) {
|
if (cmd[{"-h", "--help"}]) {
|
||||||
return;
|
return;
|
||||||
@ -202,4 +204,62 @@ namespace WorldserverCommandHandler {
|
|||||||
std::cout << payload.str() << std::endl;
|
std::cout << payload.str() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param argc
|
||||||
|
* @param argv
|
||||||
|
* @param cmd
|
||||||
|
* @param description
|
||||||
|
*/
|
||||||
|
void DatabaseDump(int argc, char **argv, argh::parser &cmd, std::string &description)
|
||||||
|
{
|
||||||
|
description = "Dumps server database tables";
|
||||||
|
|
||||||
|
if (cmd[{"-h", "--help"}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> arguments = {};
|
||||||
|
std::vector<std::string> options = {
|
||||||
|
"--all",
|
||||||
|
"--content-tables",
|
||||||
|
"--login-tables",
|
||||||
|
"--player-tables",
|
||||||
|
"--system-tables",
|
||||||
|
"--table-structure-only",
|
||||||
|
"--no-table-lock",
|
||||||
|
"--dump-path=",
|
||||||
|
"--compress"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
if (argc < 3) {
|
||||||
|
EQEmuCommand::ValidateCmdInput(arguments, options, cmd, argc, argv);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto database_dump_service = new DatabaseDumpService();
|
||||||
|
bool dump_all = cmd[{"-a", "--all"}];
|
||||||
|
|
||||||
|
if (!cmd("--dump-path").str().empty()) {
|
||||||
|
database_dump_service->SetDumpPath(cmd("--dump-path").str());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set Option
|
||||||
|
*/
|
||||||
|
database_dump_service->SetDumpContentTables(cmd[{"-c", "--content-tables"}] || dump_all);
|
||||||
|
database_dump_service->SetDumpLoginServerTables(cmd[{"-c", "--login-tables"}] || dump_all);
|
||||||
|
database_dump_service->SetDumpPlayerTables(cmd[{"-c", "--player-tables"}] || dump_all);
|
||||||
|
database_dump_service->SetDumpSystemTables(cmd[{"-c", "--system-tables"}] || dump_all);
|
||||||
|
database_dump_service->SetDumpWithNoData(cmd[{"-c", "--table-structure-only"}]);
|
||||||
|
database_dump_service->SetDumpAllTables(dump_all);
|
||||||
|
database_dump_service->SetDumpNoTableLock(cmd[{"--no-table-lock"}]);
|
||||||
|
database_dump_service->SetDumpWithCompression(cmd[{"--compress"}]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dump
|
||||||
|
*/
|
||||||
|
database_dump_service->Dump();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -30,6 +30,7 @@ namespace WorldserverCommandHandler {
|
|||||||
void DatabaseVersion(int argc, char **argv, argh::parser &cmd, std::string &description);
|
void DatabaseVersion(int argc, char **argv, argh::parser &cmd, std::string &description);
|
||||||
void DatabaseSetAccountStatus(int argc, char **argv, argh::parser &cmd, std::string &description);
|
void DatabaseSetAccountStatus(int argc, char **argv, argh::parser &cmd, std::string &description);
|
||||||
void DatabaseGetSchema(int argc, char **argv, argh::parser &cmd, std::string &description);
|
void DatabaseGetSchema(int argc, char **argv, argh::parser &cmd, std::string &description);
|
||||||
|
void DatabaseDump(int argc, char **argv, argh::parser &cmd, std::string &description);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user