Adds initial intermediate qt6 porting state
This commit is contained in:
11247 files changed
+1891537
No files matched your search
@@ -0,0 +1,82 @@
|
||||
|
||||
|
||||
|
||||
#include "dbtransaction.h"
|
||||
#include "ngldb_logger.h"
|
||||
#include <QtSql/QSqlError>
|
||||
|
||||
thread_local int s_refCounter = 0;
|
||||
|
||||
DBTransaction::DBTransaction(const QSqlDatabase &db)
|
||||
: m_db(db)
|
||||
, m_bCommitted(true)
|
||||
, mLogger(NGLDB::getLogger("DBTransaction"))
|
||||
{
|
||||
++s_refCounter;
|
||||
if (s_refCounter == 1)
|
||||
begin();
|
||||
}
|
||||
|
||||
DBTransaction::~DBTransaction()
|
||||
{
|
||||
if (s_refCounter == 1)
|
||||
{
|
||||
if (!m_bCommitted)
|
||||
rollback();
|
||||
}
|
||||
--s_refCounter;
|
||||
}
|
||||
|
||||
bool DBTransaction::begin()
|
||||
{
|
||||
if (!m_bCommitted)
|
||||
return setState(false);
|
||||
if (!m_db.transaction())
|
||||
{
|
||||
ERROR_LOG(mLogger) << "Error starting a transaction: " << m_db.lastError().driverText();
|
||||
return setState(false);
|
||||
}
|
||||
m_bCommitted = false;
|
||||
return setState(true);
|
||||
}
|
||||
|
||||
bool DBTransaction::commit()
|
||||
{
|
||||
if (s_refCounter == 1)
|
||||
{
|
||||
if (!m_db.commit())
|
||||
{
|
||||
ERROR_LOG(mLogger) << "Error committing a transaction: " << m_db.lastError().driverText();
|
||||
return setState(false);
|
||||
}
|
||||
m_bCommitted = true;
|
||||
return setState(true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DBTransaction::rollback()
|
||||
{
|
||||
if (s_refCounter == 1)
|
||||
{
|
||||
if (!m_db.rollback())
|
||||
{
|
||||
ERROR_LOG(mLogger) << "Error rolling back a transaction" << m_db.lastError().driverText();
|
||||
return setState(false);
|
||||
}
|
||||
m_bCommitted = true;
|
||||
return setState(true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DBTransaction::state() const
|
||||
{
|
||||
return m_lastState;
|
||||
}
|
||||
|
||||
bool DBTransaction::setState(bool bState)
|
||||
{
|
||||
m_lastState = bState;
|
||||
return m_lastState;
|
||||
}
|
||||
Reference in new issue
Block a user