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):
|
||||
QObject(parent),
|
||||
db(nullptr),
|
||||
UserNamePostgres(""),
|
||||
PasswordPostgres(""),
|
||||
ownerWidget(ownerWidget)
|
||||
{
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -77,13 +77,13 @@ void DialogCheckDB::on_btnRepare_clicked()
|
||||
{
|
||||
if(!resDriver)
|
||||
{
|
||||
QMessageBox::warning(this, tr("Warning!"), tr("Install PostgreSQL."));
|
||||
QMessageBox::critical(this, tr("Error!"), tr("Install PostgreSQL."));
|
||||
return;
|
||||
}
|
||||
|
||||
if(!resUser)
|
||||
{
|
||||
if(!providerDBLMS->createUser("nameUser"))
|
||||
if(!providerDBLMS->createUser())
|
||||
{
|
||||
QMessageBox::critical(this, tr("Error!"), tr("Failed to create user!"));
|
||||
return;
|
||||
@@ -92,22 +92,10 @@ void DialogCheckDB::on_btnRepare_clicked()
|
||||
|
||||
if(!resDB)
|
||||
{
|
||||
if(!providerDBLMS->createDB("nameDB"))
|
||||
if(!providerDBLMS->createDB())
|
||||
{
|
||||
QMessageBox::critical(this, tr("Error!"), tr("Failed to create Database!"));
|
||||
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:
|
||||
void on_btnRepare_clicked();
|
||||
|
||||
void on_toolButton_clicked();
|
||||
|
||||
private:
|
||||
void check();
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include <QXmlStreamReader>
|
||||
#include <QMessageBox>
|
||||
#include "dialogsettingstray.h"
|
||||
#include "Systems/tools.h"
|
||||
#include "ui_dialogsettingstray.h"
|
||||
@@ -240,16 +241,39 @@ void DialogSettingsTray::on_editPassword_textChanged(const QString &arg1)
|
||||
|
||||
void DialogSettingsTray::on_btnCheckDB_clicked()
|
||||
{
|
||||
DialogCheckDB dlgCheckDB(providerDBLMS, this);
|
||||
dlgCheckDB.setWindowFlags(dlgCheckDB.windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
|
||||
switch( dlgCheckDB.exec() )
|
||||
//Проверяем, установлен ли PostgreSQL
|
||||
if(!providerDBLMS->checkDriverQPSQLavailable())
|
||||
{
|
||||
case QDialog::Accepted:
|
||||
break;
|
||||
case QDialog::Rejected:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
QMessageBox::critical(this, tr("Error!"), tr("Driver PostgreSQL is not installed!"));
|
||||
return;
|
||||
}
|
||||
|
||||
//TODO Запрос Логина и Пароля Суперюзера PostgreSQL (postgres)
|
||||
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();
|
||||
}
|
||||
|
||||
bool ProviderDBLMS::setUserPasswordPostgres(QString userName, QString password)
|
||||
{
|
||||
return dbLMS->setUserPasswordPostgres(userName, password);
|
||||
}
|
||||
|
||||
bool ProviderDBLMS::checkDriverQPSQLavailable()
|
||||
{
|
||||
return dbLMS->checkDriverQPSQLavailable();
|
||||
@@ -79,14 +84,14 @@ bool ProviderDBLMS::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()
|
||||
|
||||
@@ -81,12 +81,13 @@ public:
|
||||
DataBaseSettings getDBSettings();
|
||||
|
||||
//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();
|
||||
|
||||
private:
|
||||
InterfaceDataBaseLMS* dbLMS;
|
||||
|
||||
Reference in New Issue
Block a user