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

This commit is contained in:
2025-11-05 23:50:10 +03:00
parent 99d9c6d1e3
commit 2d91b18bfb
8 changed files with 61 additions and 35 deletions

View File

@@ -164,25 +164,14 @@ bool DataBaseLMS::createDB()
qDebug() << "The database has been created.";
//Залитие БД
if(prepareRestoreDBscript())
{
QProcess process;
QString pgRestorePath = "restoreDBscript.bat";
QProcess process;
//QString pgRestorePath = "C:\\restoreDB.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.waitForFinished(-1); // Ждать бесконечно, пока процесс не завершится
process.start("cmd /C " + pgRestorePath);
process.waitForFinished(-1); // Ждать бесконечно, пока процесс не завершится
}
//Назначение владельца
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");
dbCheck.setUserName(UserNamePostgres);
dbCheck.setPassword(PasswordPostgres);
dbCheck2.setUserName(UserNamePostgres);
dbCheck2.setPassword(PasswordPostgres);
dbCheck2.setHostName(settings.dbHostName);
dbCheck2.setPort(settings.dbPort);
dbCheck2.setDatabaseName(settings.dbName);
@@ -242,3 +231,25 @@ bool DataBaseLMS::createDB()
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;
}