mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-12-26 23:43:34 +00:00
eaa962f265
* added mariadb-connector-cpp submodule * raknet aarch64 support * fix compile errors * mariadb connector swap (in progress) * update CMakeLists, add preprocessor definition to switch between mysql and mariadb connectors * update types with missing aarch64 check * corrected adding extra flag to properly compile mariadbconn in CMakeLists * updated readme with arm builds section * fix build failure if test folder does not exist * Remove mysql connector from all builds, add mariadbconnector to windows build * readd Linux check for backtrace lib to CMakeLists.txt * Separate system specific mariadbconncpp extra compile flags * Copy dlls to exes directory once built * fetch prebuilt binaries on windows so that ClangCL can be used * Delay load dll so that plugin directory is set correctly * Fixed typo in glibcxx compile flag * whitespacing, spaces -> tabs * Updated README.md, included instructions to update * Updated README.md added libssl-dev requirement and removed mysql connector references from macOS builds section * apple compile fixes for zlib and shared library name * add windows arm64 checks to raknet * remove extra . in shared library location * Setup plugins directory for the connector to search in, pass openssl_root_dir on for apple * Fix copy paths for single config generators and non windows * change plugin folder location, another single config generator fix * GENERATOR_IS_MULTI_CONFIG is a property not a variable * Fixed a few errors after merge * Fix plugin directory path, force windows to look at the right folder * fixed directory name for make_directory command * Update README.md Updated MacOS, Windows build instructions. * set INSTALL_PLUGINDIR so that the right directory is used * Support for relative rpath for docker build * added mariadb-connector-cpp submodule * raknet aarch64 support * fix compile errors * mariadb connector swap (in progress) * update CMakeLists, add preprocessor definition to switch between mysql and mariadb connectors * update types with missing aarch64 check * corrected adding extra flag to properly compile mariadbconn in CMakeLists * updated readme with arm builds section * fix build failure if test folder does not exist * Remove mysql connector from all builds, add mariadbconnector to windows build * readd Linux check for backtrace lib to CMakeLists.txt * Separate system specific mariadbconncpp extra compile flags * Copy dlls to exes directory once built * fetch prebuilt binaries on windows so that ClangCL can be used * Delay load dll so that plugin directory is set correctly * Fixed typo in glibcxx compile flag * whitespacing, spaces -> tabs * Updated README.md, included instructions to update * Updated README.md added libssl-dev requirement and removed mysql connector references from macOS builds section * apple compile fixes for zlib and shared library name * add windows arm64 checks to raknet * Setup plugins directory for the connector to search in, pass openssl_root_dir on for apple * Fix copy paths for single config generators and non windows * change plugin folder location, another single config generator fix * GENERATOR_IS_MULTI_CONFIG is a property not a variable * Fixed a few errors after merge * Fix plugin directory path, force windows to look at the right folder * fixed directory name for make_directory command * Update README.md Updated MacOS, Windows build instructions. * set INSTALL_PLUGINDIR so that the right directory is used * Support for relative rpath for docker build * Rebase on main * Remove extra git submodule * Update CMakeLists.txt * Remove CMakeLists.txt file from mariadb Remove the CMakeLists.txt file from the mariaDBConnector so we dont build the tests. Also add a config option to the CMakeVariables.txt so you can build the connector with multiple jobs * Compile on windows Specify the mariadbcpp.dll file location with a defined absolute path so windows knows it actually exists. * default to 1 job Default mariadb jobs running in parallel to 1 instead of 4 * Move mariadbcpp.dll file to the expected directory on windows * Changed plugin Updated the plugin location from the project binary directory to the expected location, the mariadb binary directory. * Addressed windows dll issues by moving files to the expected directory instead of a directory that wouldnt get created * Update README Co-authored-by: Aaron Kimbrell <aronwk.aaron@gmail.com> Co-authored-by: EmosewaMC <39972741+EmosewaMC@users.noreply.github.com>
82 lines
2.5 KiB
C++
82 lines
2.5 KiB
C++
#include "Database.h"
|
|
#include "Game.h"
|
|
#include "dConfig.h"
|
|
#include "dLogger.h"
|
|
using namespace std;
|
|
|
|
#pragma warning (disable:4251) //Disables SQL warnings
|
|
|
|
sql::Driver * Database::driver;
|
|
sql::Connection * Database::con;
|
|
|
|
void Database::Connect(const string& host, const string& database, const string& username, const string& password) {
|
|
|
|
//To bypass debug issues:
|
|
std::string newHost = "tcp://" + host;
|
|
const char* szHost = newHost.c_str();
|
|
const char* szDatabase = database.c_str();
|
|
const char* szUsername = username.c_str();
|
|
const char* szPassword = password.c_str();
|
|
|
|
driver = sql::mariadb::get_driver_instance();
|
|
|
|
sql::Properties properties;
|
|
properties["hostName"] = szHost;
|
|
properties["user"] = szUsername;
|
|
properties["password"] = szPassword;
|
|
properties["autoReconnect"] = "true";
|
|
con = driver->connect(properties);
|
|
con->setSchema(szDatabase);
|
|
} //Connect
|
|
|
|
void Database::Destroy(std::string source) {
|
|
if (!con) return;
|
|
if (source != "") Game::logger->Log("Database", "Destroying MySQL connection from %s!\n", source.c_str());
|
|
else Game::logger->Log("Database", "Destroying MySQL connection!\n");
|
|
con->close();
|
|
delete con;
|
|
} //Destroy
|
|
|
|
sql::Statement* Database::CreateStmt() {
|
|
sql::Statement* toReturn = con->createStatement();
|
|
return toReturn;
|
|
} //CreateStmt
|
|
|
|
sql::PreparedStatement* Database::CreatePreppedStmt(const std::string& query) {
|
|
const char* test = query.c_str();
|
|
size_t size = query.length();
|
|
sql::SQLString str(test, size);
|
|
|
|
if (!con) {
|
|
//Connect to the MySQL Database
|
|
std::string mysql_host = Game::config->GetValue("mysql_host");
|
|
std::string mysql_database = Game::config->GetValue("mysql_database");
|
|
std::string mysql_username = Game::config->GetValue("mysql_username");
|
|
std::string mysql_password = Game::config->GetValue("mysql_password");
|
|
|
|
Connect(mysql_host, mysql_database, mysql_username, mysql_password);
|
|
Game::logger->Log("Database", "Trying to reconnect to MySQL\n");
|
|
}
|
|
|
|
if (!con->isValid() || con->isClosed())
|
|
{
|
|
delete con;
|
|
|
|
con = nullptr;
|
|
|
|
//Connect to the MySQL Database
|
|
std::string mysql_host = Game::config->GetValue("mysql_host");
|
|
std::string mysql_database = Game::config->GetValue("mysql_database");
|
|
std::string mysql_username = Game::config->GetValue("mysql_username");
|
|
std::string mysql_password = Game::config->GetValue("mysql_password");
|
|
|
|
Connect(mysql_host, mysql_database, mysql_username, mysql_password);
|
|
Game::logger->Log("Database", "Trying to reconnect to MySQL from invalid or closed connection\n");
|
|
}
|
|
|
|
auto* stmt = con->prepareStatement(str);
|
|
|
|
return stmt;
|
|
} //CreatePreppedStmt
|
|
|