mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Рефакт Администрирование БД
This commit is contained in:
@@ -13,6 +13,8 @@ const QString DataBaseLMS::TypeUserDBTrainee = "trainee";
|
|||||||
DataBaseLMS::DataBaseLMS(QWidget *ownerWidget, QObject *parent):
|
DataBaseLMS::DataBaseLMS(QWidget *ownerWidget, QObject *parent):
|
||||||
QObject(parent),
|
QObject(parent),
|
||||||
db(nullptr),
|
db(nullptr),
|
||||||
|
UserNamePostgres(""),
|
||||||
|
PasswordPostgres(""),
|
||||||
ownerWidget(ownerWidget)
|
ownerWidget(ownerWidget)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -41,12 +41,12 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
//PostgreSQL
|
//PostgreSQL
|
||||||
|
bool setUserPasswordPostgres(QString userName, QString password);
|
||||||
bool checkDriverQPSQLavailable();
|
bool checkDriverQPSQLavailable();
|
||||||
bool checkUserLMSexist();
|
bool checkUserLMSexist();
|
||||||
bool checkDataBaseLMSexist();
|
bool checkDataBaseLMSexist();
|
||||||
|
bool createUser();
|
||||||
bool createUser(QString name);
|
bool createDB();
|
||||||
bool createDB(QString name);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//Подключение
|
//Подключение
|
||||||
@@ -126,6 +126,10 @@ private:
|
|||||||
protected:
|
protected:
|
||||||
QSqlDatabase* db;
|
QSqlDatabase* db;
|
||||||
DataBaseSettings dbSettings;
|
DataBaseSettings dbSettings;
|
||||||
|
|
||||||
|
QString UserNamePostgres;
|
||||||
|
QString PasswordPostgres;
|
||||||
|
|
||||||
QTranslator qtLanguageTranslator;
|
QTranslator qtLanguageTranslator;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -7,6 +7,31 @@
|
|||||||
#include <QDomDocument>
|
#include <QDomDocument>
|
||||||
#include <QProcess>
|
#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()
|
bool DataBaseLMS::checkDriverQPSQLavailable()
|
||||||
{
|
{
|
||||||
return QSqlDatabase::isDriverAvailable("QPSQL");
|
return QSqlDatabase::isDriverAvailable("QPSQL");
|
||||||
@@ -17,8 +42,8 @@ bool DataBaseLMS::checkUserLMSexist()
|
|||||||
DataBaseSettings settings = getDataBaseSettings();
|
DataBaseSettings settings = getDataBaseSettings();
|
||||||
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
|
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
|
||||||
|
|
||||||
dbCheck.setUserName("postgres");
|
dbCheck.setUserName(UserNamePostgres);
|
||||||
dbCheck.setPassword("12345678");
|
dbCheck.setPassword(PasswordPostgres);
|
||||||
dbCheck.setHostName(settings.dbHostName);
|
dbCheck.setHostName(settings.dbHostName);
|
||||||
dbCheck.setPort(settings.dbPort);
|
dbCheck.setPort(settings.dbPort);
|
||||||
|
|
||||||
@@ -53,8 +78,8 @@ bool DataBaseLMS::checkDataBaseLMSexist()
|
|||||||
|
|
||||||
bool flDBexist = false;
|
bool flDBexist = false;
|
||||||
|
|
||||||
dbCheck.setUserName("postgres");
|
dbCheck.setUserName(UserNamePostgres);
|
||||||
dbCheck.setPassword("12345678");
|
dbCheck.setPassword(PasswordPostgres);
|
||||||
dbCheck.setHostName(settings.dbHostName);
|
dbCheck.setHostName(settings.dbHostName);
|
||||||
dbCheck.setPort(settings.dbPort);
|
dbCheck.setPort(settings.dbPort);
|
||||||
|
|
||||||
@@ -85,13 +110,13 @@ bool DataBaseLMS::checkDataBaseLMSexist()
|
|||||||
return flDBexist;
|
return flDBexist;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DataBaseLMS::createUser(QString name)
|
bool DataBaseLMS::createUser()
|
||||||
{
|
{
|
||||||
DataBaseSettings settings = getDataBaseSettings();
|
DataBaseSettings settings = getDataBaseSettings();
|
||||||
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
|
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
|
||||||
|
|
||||||
dbCheck.setUserName("postgres");
|
dbCheck.setUserName(UserNamePostgres);
|
||||||
dbCheck.setPassword("12345678");
|
dbCheck.setPassword(PasswordPostgres);
|
||||||
dbCheck.setHostName(settings.dbHostName);
|
dbCheck.setHostName(settings.dbHostName);
|
||||||
dbCheck.setPort(settings.dbPort);
|
dbCheck.setPort(settings.dbPort);
|
||||||
|
|
||||||
@@ -118,13 +143,13 @@ bool DataBaseLMS::createUser(QString name)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DataBaseLMS::createDB(QString name)
|
bool DataBaseLMS::createDB()
|
||||||
{
|
{
|
||||||
DataBaseSettings settings = getDataBaseSettings();
|
DataBaseSettings settings = getDataBaseSettings();
|
||||||
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
|
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
|
||||||
|
|
||||||
dbCheck.setUserName("postgres");
|
dbCheck.setUserName(UserNamePostgres);
|
||||||
dbCheck.setPassword("12345678");
|
dbCheck.setPassword(PasswordPostgres);
|
||||||
dbCheck.setHostName(settings.dbHostName);
|
dbCheck.setHostName(settings.dbHostName);
|
||||||
dbCheck.setPort(settings.dbPort);
|
dbCheck.setPort(settings.dbPort);
|
||||||
|
|
||||||
@@ -164,7 +189,7 @@ bool DataBaseLMS::createDB(QString name)
|
|||||||
QSqlQuery query = QSqlQuery(dbCheck);
|
QSqlQuery query = QSqlQuery(dbCheck);
|
||||||
if(queryExec(queryStr, &query))
|
if(queryExec(queryStr, &query))
|
||||||
{
|
{
|
||||||
|
qDebug() << "The owner of database has been changed.";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
@@ -185,8 +210,8 @@ bool DataBaseLMS::createDB(QString name)
|
|||||||
|
|
||||||
QSqlDatabase dbCheck2 = QSqlDatabase::addDatabase("QPSQL");
|
QSqlDatabase dbCheck2 = QSqlDatabase::addDatabase("QPSQL");
|
||||||
|
|
||||||
dbCheck2.setUserName("postgres");
|
dbCheck.setUserName(UserNamePostgres);
|
||||||
dbCheck2.setPassword("12345678");
|
dbCheck.setPassword(PasswordPostgres);
|
||||||
dbCheck2.setHostName(settings.dbHostName);
|
dbCheck2.setHostName(settings.dbHostName);
|
||||||
dbCheck2.setPort(settings.dbPort);
|
dbCheck2.setPort(settings.dbPort);
|
||||||
dbCheck2.setDatabaseName(settings.dbName);
|
dbCheck2.setDatabaseName(settings.dbName);
|
||||||
@@ -202,15 +227,16 @@ bool DataBaseLMS::createDB(QString name)
|
|||||||
while (query.next())
|
while (query.next())
|
||||||
{
|
{
|
||||||
QString tableName = query.value(0).toString();
|
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);
|
//dbCheck2.exec(alterQueryStr);
|
||||||
/*
|
|
||||||
if (dbCheck2.exec(alterQuery))
|
if(!queryExec(alterQueryStr, &alterQuery))
|
||||||
{
|
{
|
||||||
qDebug() << "Error changing owner for table " << tableName << ":" << dbCheck2.lastError().text();
|
qDebug() << "Error changing owner for table " << tableName << ":" << dbCheck2.lastError().text();
|
||||||
return false;
|
return false;
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -77,13 +77,13 @@ void DialogCheckDB::on_btnRepare_clicked()
|
|||||||
{
|
{
|
||||||
if(!resDriver)
|
if(!resDriver)
|
||||||
{
|
{
|
||||||
QMessageBox::warning(this, tr("Warning!"), tr("Install PostgreSQL."));
|
QMessageBox::critical(this, tr("Error!"), tr("Install PostgreSQL."));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!resUser)
|
if(!resUser)
|
||||||
{
|
{
|
||||||
if(!providerDBLMS->createUser("nameUser"))
|
if(!providerDBLMS->createUser())
|
||||||
{
|
{
|
||||||
QMessageBox::critical(this, tr("Error!"), tr("Failed to create user!"));
|
QMessageBox::critical(this, tr("Error!"), tr("Failed to create user!"));
|
||||||
return;
|
return;
|
||||||
@@ -92,22 +92,10 @@ void DialogCheckDB::on_btnRepare_clicked()
|
|||||||
|
|
||||||
if(!resDB)
|
if(!resDB)
|
||||||
{
|
{
|
||||||
if(!providerDBLMS->createDB("nameDB"))
|
if(!providerDBLMS->createDB())
|
||||||
{
|
{
|
||||||
QMessageBox::critical(this, tr("Error!"), tr("Failed to create Database!"));
|
QMessageBox::critical(this, tr("Error!"), tr("Failed to create Database!"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogCheckDB::on_toolButton_clicked()
|
|
||||||
{
|
|
||||||
QProcess process;
|
|
||||||
QString program = "cmd.exe";
|
|
||||||
QStringList arguments;
|
|
||||||
arguments << "/C" << "echo Hello from QProcess" << "&&" << "pause";
|
|
||||||
process.start(program, arguments);
|
|
||||||
process.waitForFinished();
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -19,8 +19,6 @@ public:
|
|||||||
private slots:
|
private slots:
|
||||||
void on_btnRepare_clicked();
|
void on_btnRepare_clicked();
|
||||||
|
|
||||||
void on_toolButton_clicked();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void check();
|
void check();
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#include <QXmlStreamReader>
|
#include <QXmlStreamReader>
|
||||||
|
#include <QMessageBox>
|
||||||
#include "dialogsettingstray.h"
|
#include "dialogsettingstray.h"
|
||||||
#include "Systems/tools.h"
|
#include "Systems/tools.h"
|
||||||
#include "ui_dialogsettingstray.h"
|
#include "ui_dialogsettingstray.h"
|
||||||
@@ -240,16 +241,39 @@ void DialogSettingsTray::on_editPassword_textChanged(const QString &arg1)
|
|||||||
|
|
||||||
void DialogSettingsTray::on_btnCheckDB_clicked()
|
void DialogSettingsTray::on_btnCheckDB_clicked()
|
||||||
{
|
{
|
||||||
DialogCheckDB dlgCheckDB(providerDBLMS, this);
|
//Проверяем, установлен ли PostgreSQL
|
||||||
dlgCheckDB.setWindowFlags(dlgCheckDB.windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
if(!providerDBLMS->checkDriverQPSQLavailable())
|
||||||
|
|
||||||
switch( dlgCheckDB.exec() )
|
|
||||||
{
|
{
|
||||||
case QDialog::Accepted:
|
QMessageBox::critical(this, tr("Error!"), tr("Driver PostgreSQL is not installed!"));
|
||||||
break;
|
return;
|
||||||
case QDialog::Rejected:
|
}
|
||||||
break;
|
|
||||||
default:
|
//TODO Запрос Логина и Пароля Суперюзера PostgreSQL (postgres)
|
||||||
break;
|
QString UserNamePostgres;
|
||||||
|
QString PasswordPostgres;
|
||||||
|
|
||||||
|
//Имитация
|
||||||
|
UserNamePostgres = "postgres";
|
||||||
|
PasswordPostgres = "12345678";
|
||||||
|
|
||||||
|
if(providerDBLMS->setUserPasswordPostgres(UserNamePostgres, PasswordPostgres))
|
||||||
|
{
|
||||||
|
DialogCheckDB dlgCheckDB(providerDBLMS, this);
|
||||||
|
dlgCheckDB.setWindowFlags(dlgCheckDB.windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||||
|
|
||||||
|
switch( dlgCheckDB.exec() )
|
||||||
|
{
|
||||||
|
case QDialog::Accepted:
|
||||||
|
break;
|
||||||
|
case QDialog::Rejected:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QMessageBox::critical(this, tr("Error!"), tr("The superuser login or password is incorrect!"));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,6 +64,11 @@ DataBaseSettings ProviderDBLMS::getDBSettings()
|
|||||||
return dbLMS->getDataBaseSettings();
|
return dbLMS->getDataBaseSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ProviderDBLMS::setUserPasswordPostgres(QString userName, QString password)
|
||||||
|
{
|
||||||
|
return dbLMS->setUserPasswordPostgres(userName, password);
|
||||||
|
}
|
||||||
|
|
||||||
bool ProviderDBLMS::checkDriverQPSQLavailable()
|
bool ProviderDBLMS::checkDriverQPSQLavailable()
|
||||||
{
|
{
|
||||||
return dbLMS->checkDriverQPSQLavailable();
|
return dbLMS->checkDriverQPSQLavailable();
|
||||||
@@ -79,14 +84,14 @@ bool ProviderDBLMS::checkDataBaseLMSexist()
|
|||||||
return dbLMS->checkDataBaseLMSexist();
|
return dbLMS->checkDataBaseLMSexist();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ProviderDBLMS::createUser(QString name)
|
bool ProviderDBLMS::createUser()
|
||||||
{
|
{
|
||||||
return dbLMS->createUser(name);
|
return dbLMS->createUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ProviderDBLMS::createDB(QString name)
|
bool ProviderDBLMS::createDB()
|
||||||
{
|
{
|
||||||
return dbLMS->createDB(name);
|
return dbLMS->createDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ProviderDBLMS::getMainInstructorName()
|
QString ProviderDBLMS::getMainInstructorName()
|
||||||
|
|||||||
@@ -81,12 +81,13 @@ public:
|
|||||||
DataBaseSettings getDBSettings();
|
DataBaseSettings getDBSettings();
|
||||||
|
|
||||||
//PostgreSQL
|
//PostgreSQL
|
||||||
|
bool setUserPasswordPostgres(QString userName, QString password);
|
||||||
bool checkDriverQPSQLavailable();
|
bool checkDriverQPSQLavailable();
|
||||||
bool checkUserLMSexist();
|
bool checkUserLMSexist();
|
||||||
bool checkDataBaseLMSexist();
|
bool checkDataBaseLMSexist();
|
||||||
|
|
||||||
bool createUser(QString name);
|
bool createUser();
|
||||||
bool createDB(QString name);
|
bool createDB();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
InterfaceDataBaseLMS* dbLMS;
|
InterfaceDataBaseLMS* dbLMS;
|
||||||
|
|||||||
Reference in New Issue
Block a user