rename database classes
This commit is contained in:
@@ -76,7 +76,7 @@
|
||||
#include <noggit/tools/AreaTriggerTool.hpp>
|
||||
#include <noggit/StringHash.hpp>
|
||||
#include <noggit/application/NoggitApplication.hpp>
|
||||
#include <noggit/sql/DatabaseManager.h>
|
||||
#include <noggit/database/SqlDatabaseManager.h>
|
||||
|
||||
#include <QtCore/QSettings>
|
||||
|
||||
@@ -2471,7 +2471,7 @@ void MapView::createGUI()
|
||||
// do we need to do this every tick ?
|
||||
if (_settings->value("project/mysql/enabled").toBool())
|
||||
{
|
||||
auto& db_mgr = Noggit::Sql::DatabaseManager::instance();
|
||||
auto& db_mgr = Noggit::Sql::SqlDatabaseManager::instance();
|
||||
|
||||
if (db_mgr.testConnection(Noggit::Sql::SQLDbType::Noggit))
|
||||
{
|
||||
|
||||
@@ -37,8 +37,7 @@ namespace Noggit
|
||||
|
||||
bool ClientDatabase::testUploadDBCtoDB(const BlizzardDatabaseLib::BlizzardDatabaseTable& table)
|
||||
{
|
||||
|
||||
auto& db_mgr = Noggit::Sql::DatabaseManager::instance();
|
||||
auto& db_mgr = Noggit::Sql::SqlDatabaseManager::instance();
|
||||
bool valid_conn = db_mgr.testConnection(Noggit::Sql::SQLDbType::Noggit);
|
||||
if (!valid_conn)
|
||||
return false;
|
||||
@@ -96,6 +95,7 @@ namespace Noggit
|
||||
|
||||
if (!table_is_valid)
|
||||
{
|
||||
Log << "Table " << sql_table_name.toStdString() << "does not exist or has wrong structure.";
|
||||
qDebug() << "Table " << sql_table_name << "does not exist or has wrong structure.";
|
||||
return false;
|
||||
}
|
||||
@@ -130,11 +130,7 @@ namespace Noggit
|
||||
|
||||
noggit_db.transaction();
|
||||
|
||||
// Disable constraints & indexes for faster bulk load
|
||||
// query.exec("SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0");
|
||||
// query.exec("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0");
|
||||
// query.exec("LOCK TABLES `" + sql_table_name + "` WRITE");
|
||||
// query.exec("ALTER TABLE `" + sql_table_name + "` DISABLE KEYS");
|
||||
// query.exec("SET UNIQUE_CHECKS=0;");
|
||||
|
||||
QStringList rowBuffer; // holds each row as a string
|
||||
rowBuffer.reserve(batchSize);
|
||||
@@ -143,7 +139,7 @@ namespace Noggit
|
||||
{
|
||||
auto& record = client_table_iterator.Next();
|
||||
QStringList colValues;
|
||||
colValues.reserve(column_names.size()); // reserve columns per row
|
||||
colValues.reserve(column_names.size());
|
||||
|
||||
for (auto& column_def : row_definition.ColumnDefinitions)
|
||||
{
|
||||
@@ -195,7 +191,7 @@ namespace Noggit
|
||||
if (!query.exec(sql))
|
||||
{
|
||||
qWarning() << "Batch insert failed:" << query.lastError().text();
|
||||
// query.exec("UNLOCK TABLES");
|
||||
// query.exec("SET UNIQUE_CHECKS=1;");
|
||||
noggit_db.rollback();
|
||||
return false;
|
||||
}
|
||||
@@ -218,16 +214,12 @@ namespace Noggit
|
||||
if (!query.exec(sql))
|
||||
{
|
||||
qWarning() << "Final batch insert failed:" << query.lastError().text();
|
||||
// query.exec("UNLOCK TABLES");
|
||||
// query.exec("SET UNIQUE_CHECKS=1;");
|
||||
noggit_db.rollback();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// query.exec("ALTER TABLE `" + sql_table_name + "` ENABLE KEYS");
|
||||
// query.exec("UNLOCK TABLES");
|
||||
// query.exec("SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS");
|
||||
// query.exec("SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS");
|
||||
// query.exec("SET UNIQUE_CHECKS=1;");
|
||||
|
||||
noggit_db.commit();
|
||||
|
||||
@@ -237,6 +229,10 @@ namespace Noggit
|
||||
<< elapsedMs << "ms ("
|
||||
<< (table.RecordCount() * 1000.0 / elapsedMs) << " rows/sec)";
|
||||
|
||||
Log << "Inserted " << table.RecordCount() << " rows in "
|
||||
<< elapsedMs << "ms ("
|
||||
<< (table.RecordCount() * 1000.0 / elapsedMs) << " rows/sec)" << std::endl;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -253,7 +249,7 @@ namespace Noggit
|
||||
// never use this function for more than 1 rows, implement a new bulk function
|
||||
Structures::BlizzardDatabaseRow ClientDatabase::sqlRowById(const std::string& tableName, unsigned int id)
|
||||
{
|
||||
auto& db_mgr = Noggit::Sql::DatabaseManager::instance();
|
||||
auto& db_mgr = Noggit::Sql::SqlDatabaseManager::instance();
|
||||
// Test connection ?
|
||||
|
||||
auto noggit_db = db_mgr.noggitDatabase();
|
||||
@@ -411,7 +407,7 @@ namespace Noggit
|
||||
// statement += ")\n ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 DEFAULT COLLATE='utf8mb4_general_ci';";
|
||||
statement += ")\n ENGINE = InnoDB;";
|
||||
|
||||
auto& db_mgr = Noggit::Sql::DatabaseManager::instance();
|
||||
auto& db_mgr = Noggit::Sql::SqlDatabaseManager::instance();
|
||||
bool valid_conn = db_mgr.testConnection(Noggit::Sql::SQLDbType::Noggit);
|
||||
if (!valid_conn)
|
||||
return false;
|
||||
@@ -426,7 +422,7 @@ namespace Noggit
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "Table " << table_name.c_str() << " created or already exists.";
|
||||
qDebug() << "Table " << table_name.c_str() << " created.";
|
||||
}
|
||||
|
||||
return success;
|
||||
@@ -2,7 +2,7 @@
|
||||
#include <blizzard-database-library/include/BlizzardDatabase.h>
|
||||
#include <blizzard-database-library/include/structures/FileStructures.h>
|
||||
|
||||
#include <noggit/sql/DatabaseManager.h>
|
||||
#include <noggit/database/SqlDatabaseManager.h>
|
||||
|
||||
#include <optional>
|
||||
|
||||
@@ -27,6 +27,49 @@ namespace Noggit
|
||||
bool isSigned = true;
|
||||
};
|
||||
|
||||
// interface table that gets data either from sql or raw dbc
|
||||
class ClientDatabaseTable
|
||||
{
|
||||
private:
|
||||
const std::string _tableName;
|
||||
|
||||
public:
|
||||
unsigned int RecordCount() const;
|
||||
|
||||
// column count from file header, not definition file
|
||||
int ColumnCount() const
|
||||
{
|
||||
return static_cast<int>(_tableReader->FieldCount());
|
||||
}
|
||||
|
||||
std::string Name() const
|
||||
{
|
||||
return _tableName;
|
||||
}
|
||||
|
||||
Structures::BlizzardDatabaseRow RecordById(unsigned int id) const
|
||||
{
|
||||
return _tableReader->RecordById(id);
|
||||
}
|
||||
|
||||
Structures::BlizzardDatabaseRow RecordByPosition(unsigned int positionId) const
|
||||
{
|
||||
return _tableReader->Record(positionId);
|
||||
}
|
||||
|
||||
BlizzardDatabaseRecordCollection Records() const
|
||||
{
|
||||
return BlizzardDatabaseRecordCollection(_tableReader);
|
||||
}
|
||||
|
||||
Structures::BlizzardDatabaseRowDefinition GetRecordDefinition() const
|
||||
{
|
||||
return _tableReader->RecordDefinition();
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
// calls client or server db adaptively. so /sql/ is not really a good location
|
||||
class ClientDatabase
|
||||
{
|
||||
@@ -33,16 +33,16 @@ namespace Noggit::Sql
|
||||
QString password;
|
||||
};
|
||||
|
||||
class DatabaseManager
|
||||
class SqlDatabaseManager
|
||||
{
|
||||
public:
|
||||
static DatabaseManager& instance()
|
||||
static SqlDatabaseManager& instance()
|
||||
{
|
||||
static DatabaseManager _instance;
|
||||
static SqlDatabaseManager _instance;
|
||||
return _instance;
|
||||
}
|
||||
|
||||
bool initializeDb(SQLDbType type,
|
||||
bool initializeDbConnection(SQLDbType type,
|
||||
const QString& host, int port,
|
||||
const QString& dbName, const QString& user, const QString& password)
|
||||
{
|
||||
@@ -116,7 +116,7 @@ namespace Noggit::Sql
|
||||
qWarning() << "No configuration for database type" << static_cast<int>(type);
|
||||
}
|
||||
|
||||
QSqlDatabase db = database(type);
|
||||
QSqlDatabase db = databaseConnection(type);
|
||||
if (db.isValid() && db.isOpen())
|
||||
return true;
|
||||
|
||||
@@ -170,9 +170,9 @@ namespace Noggit::Sql
|
||||
// disable if connection is not valid
|
||||
// settings.value("project/mysql/enabled") = false;
|
||||
|
||||
promptText << database(type).lastError().text().toStdString() << std::endl;
|
||||
promptText << database(type).lastError().nativeErrorCode().toStdString() << std::endl;
|
||||
promptText << database(type).lastError().databaseText().toStdString() << std::endl;
|
||||
promptText << databaseConnection(type).lastError().text().toStdString() << std::endl;
|
||||
promptText << databaseConnection(type).lastError().nativeErrorCode().toStdString() << std::endl;
|
||||
promptText << databaseConnection(type).lastError().databaseText().toStdString() << std::endl;
|
||||
|
||||
prompt.setInformativeText(promptText.str().c_str());
|
||||
prompt.exec();
|
||||
@@ -187,26 +187,26 @@ namespace Noggit::Sql
|
||||
return availableDrivers.contains(driverToString(_sql_driver), Qt::CaseInsensitive);
|
||||
}
|
||||
|
||||
QSqlDatabase database(SQLDbType type) const
|
||||
QSqlDatabase databaseConnection(SQLDbType type) const
|
||||
{
|
||||
return QSqlDatabase::database(connectionName(type));
|
||||
}
|
||||
|
||||
QSqlDatabase noggitDatabase() const
|
||||
{
|
||||
return DatabaseManager::database(SQLDbType::Noggit);
|
||||
return SqlDatabaseManager::databaseConnection(SQLDbType::Noggit);
|
||||
}
|
||||
|
||||
QSqlDatabase worldDatabase() const
|
||||
{
|
||||
return DatabaseManager::database(SQLDbType::World);
|
||||
return SqlDatabaseManager::databaseConnection(SQLDbType::World);
|
||||
}
|
||||
|
||||
private:
|
||||
DatabaseManager() = default;
|
||||
~DatabaseManager() = default;
|
||||
DatabaseManager(const DatabaseManager&) = delete;
|
||||
DatabaseManager& operator=(const DatabaseManager&) = delete;
|
||||
SqlDatabaseManager() = default;
|
||||
~SqlDatabaseManager() = default;
|
||||
SqlDatabaseManager(const SqlDatabaseManager&) = delete;
|
||||
SqlDatabaseManager& operator=(const SqlDatabaseManager&) = delete;
|
||||
|
||||
SqlDriver _sql_driver = SqlDriver::MySQL;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
bool Noggit::Sql::SqlUIDStorage::hasMaxUIDStoredDB(std::size_t mapID)
|
||||
{
|
||||
auto& db_mgr = DatabaseManager::instance();
|
||||
auto& db_mgr = SqlDatabaseManager::instance();
|
||||
|
||||
bool valid_conn = db_mgr.testConnection(SQLDbType::Noggit);
|
||||
if (!valid_conn)
|
||||
@@ -25,7 +25,7 @@ bool Noggit::Sql::SqlUIDStorage::hasMaxUIDStoredDB(std::size_t mapID)
|
||||
|
||||
std::uint32_t Noggit::Sql::SqlUIDStorage::getGUIDFromDB(std::size_t mapID)
|
||||
{
|
||||
auto& db_mgr = Sql::DatabaseManager::instance();
|
||||
auto& db_mgr = Sql::SqlDatabaseManager::instance();
|
||||
|
||||
bool valid_conn = db_mgr.testConnection(SQLDbType::Noggit);
|
||||
if (!valid_conn)
|
||||
@@ -66,7 +66,7 @@ std::uint32_t Noggit::Sql::SqlUIDStorage::getGUIDFromDB(std::size_t mapID)
|
||||
|
||||
void Noggit::Sql::SqlUIDStorage::insertUIDinDB(std::size_t mapID, std::uint32_t NewUID)
|
||||
{
|
||||
auto& db_mgr = Sql::DatabaseManager::instance();
|
||||
auto& db_mgr = Sql::SqlDatabaseManager::instance();
|
||||
bool valid_conn = db_mgr.testConnection(SQLDbType::Noggit);
|
||||
if (!valid_conn)
|
||||
{
|
||||
@@ -88,7 +88,7 @@ void Noggit::Sql::SqlUIDStorage::insertUIDinDB(std::size_t mapID, std::uint32_t
|
||||
|
||||
void Noggit::Sql::SqlUIDStorage::updateUIDinDB(std::size_t mapID, std::uint32_t NewUID)
|
||||
{
|
||||
auto& db_mgr = Sql::DatabaseManager::instance();
|
||||
auto& db_mgr = Sql::SqlDatabaseManager::instance();
|
||||
|
||||
if (!db_mgr.testConnection(SQLDbType::Noggit))
|
||||
return;
|
||||
@@ -1,5 +1,5 @@
|
||||
#pragma once
|
||||
#include <noggit/sql/DatabaseManager.h>
|
||||
#include <noggit/database/SqlDatabaseManager.h>
|
||||
|
||||
namespace Noggit::Sql
|
||||
{
|
||||
0
src/noggit/database/clientDbDefinitions/MapDB.h
Normal file
0
src/noggit/database/clientDbDefinitions/MapDB.h
Normal file
@@ -13,7 +13,7 @@
|
||||
#include <noggit/uid_storage.hpp>
|
||||
#include <noggit/application/NoggitApplication.hpp>
|
||||
#include <ClientFile.hpp>
|
||||
#include <noggit/sql/SqlUIDStorage.h>
|
||||
#include <noggit/database/SqlUIDStorage.h>
|
||||
|
||||
#include <QtCore/QSettings>
|
||||
#include <QByteArray>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <noggit/World.h>
|
||||
|
||||
#include <blizzard-database-library/include/BlizzardDatabase.h>
|
||||
#include <noggit/sql/ClientDatabase.h>
|
||||
#include <noggit/database/ClientDatabase.h>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QButtonGroup>
|
||||
@@ -649,7 +649,6 @@ void MapCreationWizard::selectMap(int map_id)
|
||||
}
|
||||
///////////////////////////////
|
||||
|
||||
|
||||
_cur_map_id = map_id;
|
||||
|
||||
if (_world)
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
#include <noggit/ui/windows/settingsPanel/SettingsPanel.h>
|
||||
#include <noggit/uid_storage.hpp>
|
||||
#include <noggit/World.h>
|
||||
#include <noggit/sql/SqlUIDStorage.h>
|
||||
#include <noggit/sql/ClientDatabase.h>
|
||||
#include <noggit/database/SqlUIDStorage.h>
|
||||
#include <noggit/database/ClientDatabase.h>
|
||||
|
||||
#include <string>
|
||||
#include <blizzard-archive-library/include/Exception.hpp>
|
||||
@@ -94,8 +94,8 @@ namespace Noggit::Ui::Windows
|
||||
auto user = settings.value("project/mysql/user").toString();
|
||||
auto pass = settings.value("project/mysql/pwd").toString();
|
||||
|
||||
auto& db_manager = Sql::DatabaseManager::instance();
|
||||
db_manager.initializeDb(Sql::SQLDbType::Noggit, host, port, db_name, user, pass);
|
||||
auto& db_manager = Sql::SqlDatabaseManager::instance();
|
||||
db_manager.initializeDbConnection(Sql::SQLDbType::Noggit, host, port, db_name, user, pass);
|
||||
}
|
||||
|
||||
setCentralWidget(_null_widget);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include <noggit/Log.h>
|
||||
#include <noggit/ui/FramelessWindow.hpp>
|
||||
#include <noggit/ui/windows/settingsPanel/SettingsPanel.h>
|
||||
#include <noggit/sql/DatabaseManager.h>
|
||||
#include <noggit/database/SqlDatabaseManager.h>
|
||||
|
||||
#include <QDir>
|
||||
#include <QtCore/QSettings>
|
||||
@@ -170,7 +170,7 @@ namespace Noggit
|
||||
|
||||
// save_changes(); // old method saved and only used qsetting
|
||||
|
||||
auto& db_manager = Sql::DatabaseManager::instance();
|
||||
auto& db_manager = Sql::SqlDatabaseManager::instance();
|
||||
|
||||
if (!db_manager.isDriverAvailable())
|
||||
{
|
||||
@@ -201,7 +201,7 @@ namespace Noggit
|
||||
int port = ui->_mysql_port_field->value();
|
||||
|
||||
// test temporary connection from text fields
|
||||
bool test1 = db_manager.initializeDb(Sql::SQLDbType::Noggit, host, port, db_name, user, pass);
|
||||
bool test1 = db_manager.initializeDbConnection(Sql::SQLDbType::Noggit, host, port, db_name, user, pass);
|
||||
bool test2 = db_manager.testConnectionWithPopup(Sql::SQLDbType::Noggit, false);
|
||||
|
||||
// reconnect to saved db from settings
|
||||
@@ -212,7 +212,7 @@ namespace Noggit
|
||||
user = settings.value("project/mysql/user").toString();
|
||||
pass = settings.value("project/mysql/pwd").toString();
|
||||
|
||||
bool test3 = db_manager.initializeDb(Sql::SQLDbType::Noggit, host, port, db_name, user, pass);
|
||||
bool test3 = db_manager.initializeDbConnection(Sql::SQLDbType::Noggit, host, port, db_name, user, pass);
|
||||
assert(db_manager.testConnection(Sql::SQLDbType::Noggit));
|
||||
|
||||
}
|
||||
@@ -375,14 +375,14 @@ namespace Noggit
|
||||
_settings->sync();
|
||||
|
||||
// reinitialize db on save
|
||||
auto& db_manager = Sql::DatabaseManager::instance();
|
||||
auto& db_manager = Sql::SqlDatabaseManager::instance();
|
||||
QString host = _settings->value("project/mysql/server").toString();
|
||||
int port = _settings->value("project/mysql/port", "3306").toInt();
|
||||
QString db_name = _settings->value("project/mysql/db").toString();
|
||||
QString user = _settings->value("project/mysql/user").toString();
|
||||
QString pass = _settings->value("project/mysql/pwd").toString();
|
||||
|
||||
bool test1 = db_manager.initializeDb(Sql::SQLDbType::Noggit, host, port, db_name, user, pass);
|
||||
bool test1 = db_manager.initializeDbConnection(Sql::SQLDbType::Noggit, host, port, db_name, user, pass);
|
||||
bool test2 = db_manager.testConnectionWithPopup(Sql::SQLDbType::Noggit, true);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user