Рефакт Администрирование БД

This commit is contained in:
2025-11-05 12:36:11 +03:00
parent e9363c388b
commit 84ea6ca512
8 changed files with 102 additions and 54 deletions

View File

@@ -13,6 +13,8 @@ const QString DataBaseLMS::TypeUserDBTrainee = "trainee";
DataBaseLMS::DataBaseLMS(QWidget *ownerWidget, QObject *parent):
QObject(parent),
db(nullptr),
UserNamePostgres(""),
PasswordPostgres(""),
ownerWidget(ownerWidget)
{

View File

@@ -41,12 +41,12 @@ public:
public:
//PostgreSQL
bool setUserPasswordPostgres(QString userName, QString password);
bool checkDriverQPSQLavailable();
bool checkUserLMSexist();
bool checkDataBaseLMSexist();
bool createUser(QString name);
bool createDB(QString name);
bool createUser();
bool createDB();
protected:
//Подключение
@@ -126,6 +126,10 @@ private:
protected:
QSqlDatabase* db;
DataBaseSettings dbSettings;
QString UserNamePostgres;
QString PasswordPostgres;
QTranslator qtLanguageTranslator;
private:

View File

@@ -7,6 +7,31 @@
#include <QDomDocument>
#include <QProcess>
bool DataBaseLMS::setUserPasswordPostgres(QString userName, QString password)
{
DataBaseSettings settings = getDataBaseSettings();
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
dbCheck.setUserName(userName);
dbCheck.setPassword(password);
dbCheck.setHostName(settings.dbHostName);
dbCheck.setPort(settings.dbPort);
if (dbCheck.open())
{
UserNamePostgres = userName;
PasswordPostgres = password;
dbCheck.close();
return true;
}
else
{
qDebug() << "PostgreSQL connection error.";
return false;
}
}
bool DataBaseLMS::checkDriverQPSQLavailable()
{
return QSqlDatabase::isDriverAvailable("QPSQL");
@@ -17,8 +42,8 @@ bool DataBaseLMS::checkUserLMSexist()
DataBaseSettings settings = getDataBaseSettings();
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
dbCheck.setUserName("postgres");
dbCheck.setPassword("12345678");
dbCheck.setUserName(UserNamePostgres);
dbCheck.setPassword(PasswordPostgres);
dbCheck.setHostName(settings.dbHostName);
dbCheck.setPort(settings.dbPort);
@@ -53,8 +78,8 @@ bool DataBaseLMS::checkDataBaseLMSexist()
bool flDBexist = false;
dbCheck.setUserName("postgres");
dbCheck.setPassword("12345678");
dbCheck.setUserName(UserNamePostgres);
dbCheck.setPassword(PasswordPostgres);
dbCheck.setHostName(settings.dbHostName);
dbCheck.setPort(settings.dbPort);
@@ -85,13 +110,13 @@ bool DataBaseLMS::checkDataBaseLMSexist()
return flDBexist;
}
bool DataBaseLMS::createUser(QString name)
bool DataBaseLMS::createUser()
{
DataBaseSettings settings = getDataBaseSettings();
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
dbCheck.setUserName("postgres");
dbCheck.setPassword("12345678");
dbCheck.setUserName(UserNamePostgres);
dbCheck.setPassword(PasswordPostgres);
dbCheck.setHostName(settings.dbHostName);
dbCheck.setPort(settings.dbPort);
@@ -118,13 +143,13 @@ bool DataBaseLMS::createUser(QString name)
}
}
bool DataBaseLMS::createDB(QString name)
bool DataBaseLMS::createDB()
{
DataBaseSettings settings = getDataBaseSettings();
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
dbCheck.setUserName("postgres");
dbCheck.setPassword("12345678");
dbCheck.setUserName(UserNamePostgres);
dbCheck.setPassword(PasswordPostgres);
dbCheck.setHostName(settings.dbHostName);
dbCheck.setPort(settings.dbPort);
@@ -164,7 +189,7 @@ bool DataBaseLMS::createDB(QString name)
QSqlQuery query = QSqlQuery(dbCheck);
if(queryExec(queryStr, &query))
{
qDebug() << "The owner of database has been changed.";
}
else
return false;
@@ -185,8 +210,8 @@ bool DataBaseLMS::createDB(QString name)
QSqlDatabase dbCheck2 = QSqlDatabase::addDatabase("QPSQL");
dbCheck2.setUserName("postgres");
dbCheck2.setPassword("12345678");
dbCheck.setUserName(UserNamePostgres);
dbCheck.setPassword(PasswordPostgres);
dbCheck2.setHostName(settings.dbHostName);
dbCheck2.setPort(settings.dbPort);
dbCheck2.setDatabaseName(settings.dbName);
@@ -202,15 +227,16 @@ bool DataBaseLMS::createDB(QString name)
while (query.next())
{
QString tableName = query.value(0).toString();
QString alterQuery = QString("ALTER TABLE %1 OWNER TO %2;").arg(tableName).arg(newOwner);
QString alterQueryStr = QString("ALTER TABLE %1 OWNER TO %2;").arg(tableName).arg(newOwner);
QSqlQuery alterQuery(dbCheck2);
dbCheck2.exec(alterQuery);
/*
if (dbCheck2.exec(alterQuery))
//dbCheck2.exec(alterQueryStr);
if(!queryExec(alterQueryStr, &alterQuery))
{
qDebug() << "Error changing owner for table " << tableName << ":" << dbCheck2.lastError().text();
return false;
}*/
}
}
}