mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Player data to Database (#5475)
* Player data to Database Add player data into databases (SQLite3 & PG only) PostgreSQL & SQLite: better POO Design for databases Add --migrate-players argument to server + deprecation warning * Remove players directory if empty
This commit is contained in:
parent
dda171d292
commit
29ab20c272
31 changed files with 1555 additions and 378 deletions
21
src/main.cpp
21
src/main.cpp
|
@ -47,6 +47,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#endif
|
||||
#ifndef SERVER
|
||||
#include "client/clientlauncher.h"
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TOUCHSCREENGUI
|
||||
|
@ -102,7 +103,7 @@ static bool get_game_from_cmdline(GameParams *game_params, const Settings &cmd_a
|
|||
static bool determine_subgame(GameParams *game_params);
|
||||
|
||||
static bool run_dedicated_server(const GameParams &game_params, const Settings &cmd_args);
|
||||
static bool migrate_database(const GameParams &game_params, const Settings &cmd_args);
|
||||
static bool migrate_map_database(const GameParams &game_params, const Settings &cmd_args);
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
|
@ -292,6 +293,8 @@ static void set_allowed_options(OptionList *allowed_options)
|
|||
_("Set gameid (\"--gameid list\" prints available ones)"))));
|
||||
allowed_options->insert(std::make_pair("migrate", ValueSpec(VALUETYPE_STRING,
|
||||
_("Migrate from current map backend to another (Only works when using minetestserver or with --server)"))));
|
||||
allowed_options->insert(std::make_pair("migrate-players", ValueSpec(VALUETYPE_STRING,
|
||||
_("Migrate from current players backend to another (Only works when using minetestserver or with --server)"))));
|
||||
allowed_options->insert(std::make_pair("terminal", ValueSpec(VALUETYPE_FLAG,
|
||||
_("Feature an interactive terminal (Only works when using minetestserver or with --server)"))));
|
||||
#ifndef SERVER
|
||||
|
@ -332,7 +335,7 @@ static void print_allowed_options(const OptionList &allowed_options)
|
|||
if (i->second.type != VALUETYPE_FLAG)
|
||||
os1 << _(" <value>");
|
||||
|
||||
std::cout << padStringRight(os1.str(), 24);
|
||||
std::cout << padStringRight(os1.str(), 30);
|
||||
|
||||
if (i->second.help != NULL)
|
||||
std::cout << i->second.help;
|
||||
|
@ -828,7 +831,9 @@ static bool run_dedicated_server(const GameParams &game_params, const Settings &
|
|||
|
||||
// Database migration
|
||||
if (cmd_args.exists("migrate"))
|
||||
return migrate_database(game_params, cmd_args);
|
||||
return migrate_map_database(game_params, cmd_args);
|
||||
else if (cmd_args.exists("migrate-players"))
|
||||
return ServerEnvironment::migratePlayersDatabase(game_params, cmd_args);
|
||||
|
||||
if (cmd_args.exists("terminal")) {
|
||||
#if USE_CURSES
|
||||
|
@ -912,7 +917,7 @@ static bool run_dedicated_server(const GameParams &game_params, const Settings &
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool migrate_database(const GameParams &game_params, const Settings &cmd_args)
|
||||
static bool migrate_map_database(const GameParams &game_params, const Settings &cmd_args)
|
||||
{
|
||||
std::string migrate_to = cmd_args.get("migrate");
|
||||
Settings world_mt;
|
||||
|
@ -921,20 +926,23 @@ static bool migrate_database(const GameParams &game_params, const Settings &cmd_
|
|||
errorstream << "Cannot read world.mt!" << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!world_mt.exists("backend")) {
|
||||
errorstream << "Please specify your current backend in world.mt:"
|
||||
<< std::endl
|
||||
<< " backend = {sqlite3|leveldb|redis|dummy}"
|
||||
<< " backend = {sqlite3|leveldb|redis|dummy|postgresql}"
|
||||
<< std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string backend = world_mt.get("backend");
|
||||
if (backend == migrate_to) {
|
||||
errorstream << "Cannot migrate: new backend is same"
|
||||
<< " as the old one" << std::endl;
|
||||
return false;
|
||||
}
|
||||
Database *old_db = ServerMap::createDatabase(backend, game_params.world_path, world_mt),
|
||||
|
||||
MapDatabase *old_db = ServerMap::createDatabase(backend, game_params.world_path, world_mt),
|
||||
*new_db = ServerMap::createDatabase(migrate_to, game_params.world_path, world_mt);
|
||||
|
||||
u32 count = 0;
|
||||
|
@ -976,4 +984,3 @@ static bool migrate_database(const GameParams &game_params, const Settings &cmd_
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue