mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Рефакт Администрирование БД 2
This commit is contained in:
@@ -47,6 +47,7 @@ public:
|
|||||||
bool checkDataBaseLMSexist();
|
bool checkDataBaseLMSexist();
|
||||||
bool createUser();
|
bool createUser();
|
||||||
bool createDB();
|
bool createDB();
|
||||||
|
bool prepareRestoreDBscript();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//Подключение
|
//Подключение
|
||||||
|
|||||||
@@ -164,25 +164,14 @@ bool DataBaseLMS::createDB()
|
|||||||
qDebug() << "The database has been created.";
|
qDebug() << "The database has been created.";
|
||||||
|
|
||||||
//Залитие БД
|
//Залитие БД
|
||||||
|
if(prepareRestoreDBscript())
|
||||||
|
{
|
||||||
QProcess process;
|
QProcess process;
|
||||||
//QString pgRestorePath = "C:\\restoreDB.bat";
|
QString pgRestorePath = "restoreDBscript.bat";
|
||||||
QString pgRestorePath = "restoreDB.bat";
|
|
||||||
|
|
||||||
/*
|
|
||||||
QString dbName = "databaselms2";
|
|
||||||
QString user = "postgres";
|
|
||||||
QString backupFile = "C:\\DBLMS_EMPTY_30_09_2025.backup";
|
|
||||||
|
|
||||||
QStringList arguments;
|
|
||||||
arguments << "-d" << dbName;
|
|
||||||
arguments << "-U" << user;
|
|
||||||
arguments << backupFile;
|
|
||||||
*/
|
|
||||||
|
|
||||||
process.start("cmd /C " + pgRestorePath);
|
process.start("cmd /C " + pgRestorePath);
|
||||||
process.waitForFinished(-1); // Ждать бесконечно, пока процесс не завершится
|
process.waitForFinished(-1); // Ждать бесконечно, пока процесс не завершится
|
||||||
|
}
|
||||||
|
|
||||||
//Назначение владельца
|
//Назначение владельца
|
||||||
QString queryStr = QString("ALTER DATABASE %1 OWNER TO %2").arg(settings.dbName, settings.dbUserName);
|
QString queryStr = QString("ALTER DATABASE %1 OWNER TO %2").arg(settings.dbName, settings.dbUserName);
|
||||||
@@ -210,8 +199,8 @@ bool DataBaseLMS::createDB()
|
|||||||
|
|
||||||
QSqlDatabase dbCheck2 = QSqlDatabase::addDatabase("QPSQL");
|
QSqlDatabase dbCheck2 = QSqlDatabase::addDatabase("QPSQL");
|
||||||
|
|
||||||
dbCheck.setUserName(UserNamePostgres);
|
dbCheck2.setUserName(UserNamePostgres);
|
||||||
dbCheck.setPassword(PasswordPostgres);
|
dbCheck2.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);
|
||||||
@@ -242,3 +231,25 @@ bool DataBaseLMS::createDB()
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DataBaseLMS::prepareRestoreDBscript()
|
||||||
|
{
|
||||||
|
DataBaseSettings settings = getDataBaseSettings();
|
||||||
|
|
||||||
|
QFile file("restoreDBscript.bat");
|
||||||
|
if (file.open(QIODevice::WriteOnly | QIODevice::Text))
|
||||||
|
{
|
||||||
|
QTextStream out(&file);
|
||||||
|
out << "set CURRENT_DIR=%~dp0\n";
|
||||||
|
out << "cd %CURRENT_DIR%\n";
|
||||||
|
out << QString("set \"PGPASSWORD=%1\"\n").arg(PasswordPostgres);
|
||||||
|
out << QString("pg_restore -U %1 -h %2 -p %3 -d %4 DBLMS_EMPTY.backup\n").arg(UserNamePostgres,
|
||||||
|
settings.dbHostName,
|
||||||
|
QString::number(settings.dbPort),
|
||||||
|
settings.dbName);
|
||||||
|
file.close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
|
#include <QFile>
|
||||||
#include "dialogcheckdb.h"
|
#include "dialogcheckdb.h"
|
||||||
#include "ui_dialogcheckdb.h"
|
#include "ui_dialogcheckdb.h"
|
||||||
|
|
||||||
@@ -68,7 +69,9 @@ void DialogCheckDB::check()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(!resDriver || !resUser || !resDB)
|
if(!resDriver || !resUser || !resDB)
|
||||||
|
{
|
||||||
ui->btnRepare->setEnabled(true);
|
ui->btnRepare->setEnabled(true);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
ui->btnRepare->setEnabled(false);
|
ui->btnRepare->setEnabled(false);
|
||||||
}
|
}
|
||||||
@@ -86,6 +89,7 @@ void DialogCheckDB::on_btnRepare_clicked()
|
|||||||
if(!providerDBLMS->createUser())
|
if(!providerDBLMS->createUser())
|
||||||
{
|
{
|
||||||
QMessageBox::critical(this, tr("Error!"), tr("Failed to create user!"));
|
QMessageBox::critical(this, tr("Error!"), tr("Failed to create user!"));
|
||||||
|
check();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -95,7 +99,16 @@ void DialogCheckDB::on_btnRepare_clicked()
|
|||||||
if(!providerDBLMS->createDB())
|
if(!providerDBLMS->createDB())
|
||||||
{
|
{
|
||||||
QMessageBox::critical(this, tr("Error!"), tr("Failed to create Database!"));
|
QMessageBox::critical(this, tr("Error!"), tr("Failed to create Database!"));
|
||||||
|
check();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check();
|
||||||
|
|
||||||
|
if(resDriver && resUser && resDB)
|
||||||
|
{
|
||||||
|
QMessageBox::information(this, tr("Completed!"), tr("The database has been successfully restored!"));
|
||||||
|
this->accept();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ private slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void check();
|
void check();
|
||||||
|
void prepareRestoreDBscript();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::DialogCheckDB *ui;
|
Ui::DialogCheckDB *ui;
|
||||||
|
|||||||
@@ -277,10 +277,6 @@ void DialogSettingsTray::on_btnCheckDB_clicked()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Имитация
|
|
||||||
//UserNamePostgres = "postgres";
|
|
||||||
//PasswordPostgres = "12345678";
|
|
||||||
|
|
||||||
if(providerDBLMS->setUserPasswordPostgres(UserNamePostgres, PasswordPostgres))
|
if(providerDBLMS->setUserPasswordPostgres(UserNamePostgres, PasswordPostgres))
|
||||||
{
|
{
|
||||||
DialogCheckDB dlgCheckDB(providerDBLMS, this);
|
DialogCheckDB dlgCheckDB(providerDBLMS, this);
|
||||||
@@ -289,6 +285,8 @@ void DialogSettingsTray::on_btnCheckDB_clicked()
|
|||||||
switch( dlgCheckDB.exec() )
|
switch( dlgCheckDB.exec() )
|
||||||
{
|
{
|
||||||
case QDialog::Accepted:
|
case QDialog::Accepted:
|
||||||
|
ui->btnSave->setEnabled(true);
|
||||||
|
flSettingsServerChanged = true;
|
||||||
break;
|
break;
|
||||||
case QDialog::Rejected:
|
case QDialog::Rejected:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -203,7 +203,7 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Check</string>
|
<string>Check&&Repare</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="ServerLMS.qrc">
|
<iconset resource="ServerLMS.qrc">
|
||||||
|
|||||||
@@ -314,6 +314,8 @@ void ServerLMSWidget::tryConnectionToDB()
|
|||||||
emit signal_Menu_ShowWindow();
|
emit signal_Menu_ShowWindow();
|
||||||
|
|
||||||
QMessageBox::critical(this, tr("Error!"), tr("Database connection error!"));
|
QMessageBox::critical(this, tr("Error!"), tr("Database connection error!"));
|
||||||
|
|
||||||
|
on_btnSettings_clicked();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user