mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
ввел мьютекс на запросы SQL работает
This commit is contained in:
@@ -18,23 +18,29 @@ DataBaseLMS::~DataBaseLMS()
|
||||
|
||||
bool DataBaseLMS::createConnection()
|
||||
{
|
||||
mtxAccess.lock();
|
||||
|
||||
db = new QSqlDatabase(QSqlDatabase::addDatabase(dbType));
|
||||
db->setDatabaseName(dbName);
|
||||
db->setUserName(dbUserName);
|
||||
db->setPassword(dbPassword);
|
||||
if(!db->open())
|
||||
{
|
||||
mtxAccess.unlock();
|
||||
deleteConnection();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
mtxAccess.unlock();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void DataBaseLMS::deleteConnection()
|
||||
{
|
||||
mtxAccess.lock();
|
||||
|
||||
if(transactionBegined)
|
||||
QSqlDatabase::database().rollback();
|
||||
|
||||
@@ -46,17 +52,29 @@ void DataBaseLMS::deleteConnection()
|
||||
delete db;
|
||||
db = nullptr;
|
||||
}
|
||||
|
||||
mtxAccess.unlock();
|
||||
}
|
||||
|
||||
bool DataBaseLMS::isConnected()
|
||||
{
|
||||
mtxAccess.lock();
|
||||
|
||||
if(db == nullptr)
|
||||
{
|
||||
mtxAccess.unlock();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(db->isOpen())
|
||||
{
|
||||
mtxAccess.unlock();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
mtxAccess.unlock();
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -97,11 +115,7 @@ QList<Instructor> DataBaseLMS::selectAllInstructors()
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Инструктор
|
||||
@@ -136,11 +150,7 @@ QList<Trainee> DataBaseLMS::selectAllTrainees()
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Обучаемый
|
||||
@@ -179,11 +189,7 @@ QList<Group> DataBaseLMS::selectAllGroups()
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Группа
|
||||
@@ -209,11 +215,7 @@ Instructor DataBaseLMS::selectInstructor(int id_instructor)
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Инструктор
|
||||
@@ -260,18 +262,7 @@ QString DataBaseLMS::selectInstructorNameByLogin(QString login)
|
||||
"WHERE instructors.login = '%1' ").arg(
|
||||
login );
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toString();
|
||||
}
|
||||
return QStringLiteral("");
|
||||
return queryExecString(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::selectInstructorIsAdmin(int id_instructor)
|
||||
@@ -281,18 +272,7 @@ bool DataBaseLMS::selectInstructorIsAdmin(int id_instructor)
|
||||
"WHERE instructor_id = %1 ").arg(
|
||||
id_instructor );
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toBool();
|
||||
}
|
||||
return false;
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::selectInstructorLoggedIn(int id_instructor)
|
||||
@@ -302,18 +282,7 @@ bool DataBaseLMS::selectInstructorLoggedIn(int id_instructor)
|
||||
"WHERE instructor_id = %1 ").arg(
|
||||
id_instructor );
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toBool();
|
||||
}
|
||||
return false;
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::selectInstructorArchived(int id_instructor)
|
||||
@@ -323,18 +292,7 @@ bool DataBaseLMS::selectInstructorArchived(int id_instructor)
|
||||
"WHERE instructor_id = %1 ").arg(
|
||||
id_instructor );
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toBool();
|
||||
}
|
||||
return false;
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateInstructorLoggedIn(int id_instructor, bool loggedIn)
|
||||
@@ -357,15 +315,7 @@ bool DataBaseLMS::updateAllInstructorsLoggedIn(bool loggedIn)
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return queryExec(queryStr, &query);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateInstructorArchived(int id_instructor, bool archived)
|
||||
@@ -442,11 +392,7 @@ Group DataBaseLMS::selectGroup(int id_group)
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Инструктор
|
||||
@@ -515,11 +461,7 @@ Trainee DataBaseLMS::selectTrainee(int id_trainee)
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Инструктор
|
||||
@@ -561,11 +503,7 @@ QList<Trainee> DataBaseLMS::selectAllTraineesInGroup(int id_group)
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Обучаемый
|
||||
@@ -624,18 +562,7 @@ QString DataBaseLMS::selectTraineeNameByLogin(QString login)
|
||||
"WHERE trainees.login = '%1' ").arg(
|
||||
login );
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toString();
|
||||
}
|
||||
return QStringLiteral("");
|
||||
return queryExecString(queryStr);
|
||||
}
|
||||
|
||||
QString DataBaseLMS::selectTraineeNameOnComputer(QString computer_name)
|
||||
@@ -645,18 +572,7 @@ QString DataBaseLMS::selectTraineeNameOnComputer(QString computer_name)
|
||||
"WHERE computers.name = '%1' ").arg(
|
||||
computer_name);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toString();
|
||||
}
|
||||
return QStringLiteral("");
|
||||
return queryExecString(queryStr);
|
||||
}
|
||||
|
||||
Trainee DataBaseLMS::selectTraineeOnComputer(QString computer_name)
|
||||
@@ -675,11 +591,7 @@ Trainee DataBaseLMS::selectTraineeOnComputer(QString computer_name)
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Инструктор
|
||||
@@ -711,18 +623,7 @@ bool DataBaseLMS::selectTraineeArchived(int id_trainee)
|
||||
"WHERE trainee_id = %1 ").arg(
|
||||
id_trainee );
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toBool();
|
||||
}
|
||||
return false;
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::selectTraineeLoggedIn(int id_trainee)
|
||||
@@ -732,18 +633,7 @@ bool DataBaseLMS::selectTraineeLoggedIn(int id_trainee)
|
||||
"WHERE trainee_id = %1 ").arg(
|
||||
id_trainee );
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toBool();
|
||||
}
|
||||
return false;
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTraineeLoggedIn(int id_trainee, bool loggedIn)
|
||||
@@ -766,15 +656,7 @@ bool DataBaseLMS::updateAllTraineesLoggedIn(bool loggedIn)
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return queryExec(queryStr, &query);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTraineeArchived(int id_trainee, bool archived)
|
||||
@@ -860,11 +742,7 @@ QList<Task> DataBaseLMS::selectTasksOfTrainee(int trainee_id)
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
}
|
||||
else
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Задача
|
||||
@@ -882,18 +760,49 @@ int DataBaseLMS::queryExecInt(QString queryStr)
|
||||
{
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr, &query);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toInt();
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
QString DataBaseLMS::queryExecString(QString queryStr)
|
||||
{
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toString();
|
||||
}
|
||||
|
||||
return QStringLiteral("");
|
||||
}
|
||||
|
||||
bool DataBaseLMS::queryExecBool(QString queryStr)
|
||||
{
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toBool();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool DataBaseLMS::queryExec(QString queryStr, QSqlQuery *query)
|
||||
{
|
||||
bool res = false;
|
||||
mtxAccess.lock();
|
||||
if(! (res = query->exec(queryStr)) )
|
||||
messageWarningErrorQuery(queryStr, query);
|
||||
mtxAccess.unlock();
|
||||
return res;
|
||||
}
|
||||
|
||||
void DataBaseLMS::messageWarningErrorQuery(QString queryStr, QSqlQuery* query)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define DATABASELMS_H
|
||||
|
||||
#include <QSqlDatabase>
|
||||
#include <QMutex>
|
||||
|
||||
#include "instructor.h"
|
||||
#include "trainee.h"
|
||||
@@ -73,6 +74,9 @@ protected:
|
||||
|
||||
private:
|
||||
int queryExecInt(QString queryStr);
|
||||
QString queryExecString(QString queryStr);
|
||||
bool queryExecBool(QString queryStr);
|
||||
bool queryExec(QString queryStr, QSqlQuery* query);
|
||||
void messageWarningErrorQuery(QString queryStr, QSqlQuery* query);
|
||||
|
||||
protected:
|
||||
@@ -83,6 +87,8 @@ private:
|
||||
const QString dbUserName = "postgres";
|
||||
const QString dbPassword = "12345678";
|
||||
const QString dbType = "QPSQL";
|
||||
|
||||
QMutex mtxAccess;
|
||||
};
|
||||
|
||||
#endif // DATABASELMS_H
|
||||
|
||||
Reference in New Issue
Block a user