Transaction deleteTrainee

This commit is contained in:
krivoshein
2025-01-30 12:27:05 +03:00
parent 239b7d258c
commit 7b14dc709c
7 changed files with 74 additions and 16 deletions

View File

@@ -2,6 +2,7 @@
#include <QtSql>
#include <QSqlDatabase>
#include <QSqlDriver>
#include <QMessageBox>
DataBaseLMS::DataBaseLMS():
@@ -20,14 +21,16 @@ bool DataBaseLMS::createConnection()
{
mtxAccess.lock();
db = new QSqlDatabase(QSqlDatabase::addDatabase(dbType));
db = new QSqlDatabase(QSqlDatabase::addDatabase(dbType, connectionName));
db->setDatabaseName(dbName);
db->setUserName(dbUserName);
db->setPassword(dbPassword);
db->setPort(5432);
db->setHostName("192.168.100.87");
if(!db->open())
bool res = db->open();
if(!res)
{
mtxAccess.unlock();
deleteConnection();
@@ -35,6 +38,11 @@ bool DataBaseLMS::createConnection()
}
else
{
bool flHas = db->driver()->hasFeature(QSqlDriver::Transactions);
//bool resBool = QSqlDatabase::database(connectionName).transaction();
//resBool = QSqlDatabase::database(connectionName).commit();
mtxAccess.unlock();
return true;
}
@@ -823,12 +831,50 @@ int DataBaseLMS::insertTrainee(Trainee trainee)
int DataBaseLMS::deleteTrainee(int id_trainee)
{
QString queryStr = QString("DELETE FROM public.trainees "
QString queryStr;
int res = 0;
bool resBool = false;
resBool = db->transaction();
QSqlQuery query = QSqlQuery(*db);
queryStr = QString("DELETE FROM public.tasks_amm "
"WHERE trainee_task = %1 ").arg(
QString::number(id_trainee));
if(!queryExec(queryStr, &query))
{
resBool = db->rollback();
return 0;
}
queryStr = QString("DELETE FROM public.tasks_fim "
"WHERE trainee_task = %1 ").arg(
QString::number(id_trainee));
if(!queryExec(queryStr, &query))
{
resBool = db->rollback();
return 0;
}
queryStr = QString("DELETE FROM public.trainees "
"WHERE trainee_id = %1 "
"RETURNING trainees.trainee_id").arg(
QString::number(id_trainee));
return queryExecInt(queryStr);
res = queryExecInt(queryStr);
if(res)
{
resBool = db->commit();
return res;
}
else
{
resBool = db->rollback();
return 0;
}
}
int DataBaseLMS::updateTrainee(Trainee trainee)

View File

@@ -94,6 +94,7 @@ private:
protected:
QSqlDatabase* db;
const QString dbName = "DataBaseLMS";
const QString connectionName = "Connection_DataBaseLMS";
private:
bool transactionBegined;
const QString dbUserName = "postgres";