Fixed Transaction class.
This commit is contained in:
@@ -47,5 +47,4 @@ void Context::openDb(const QString &path)
|
|||||||
Context::Context()
|
Context::Context()
|
||||||
{
|
{
|
||||||
m_db = NULL;
|
m_db = NULL;
|
||||||
m_inTransaction = false;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,13 +19,9 @@ public:
|
|||||||
odb::database *db() { return m_db; }
|
odb::database *db() { return m_db; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class Transaction;
|
|
||||||
|
|
||||||
Context();
|
Context();
|
||||||
QList<IPlugin*> m_plugins;
|
QList<IPlugin*> m_plugins;
|
||||||
odb::database *m_db;
|
odb::database *m_db;
|
||||||
bool m_inTransaction;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CONTEXT_H
|
#endif // CONTEXT_H
|
||||||
|
|||||||
+22
-2
@@ -1,12 +1,32 @@
|
|||||||
#include "transaction.h"
|
#include "transaction.h"
|
||||||
|
|
||||||
|
#include "context.h"
|
||||||
|
|
||||||
|
bool Transaction::m_inTransaction = false;
|
||||||
|
|
||||||
Transaction::Transaction()
|
Transaction::Transaction()
|
||||||
{
|
{
|
||||||
|
if (!Transaction::m_inTransaction)
|
||||||
|
{
|
||||||
|
m_tr = new odb::transaction(Context::instance().db()->begin());
|
||||||
|
Transaction::m_inTransaction = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Transaction::~Transaction()
|
Transaction::~Transaction()
|
||||||
{
|
{
|
||||||
|
if (m_tr != NULL)
|
||||||
|
{
|
||||||
|
delete m_tr;
|
||||||
|
Transaction::m_inTransaction = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Transaction::commit()
|
||||||
|
{
|
||||||
|
if (m_tr != NULL)
|
||||||
|
{
|
||||||
|
m_tr->commit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,20 @@
|
|||||||
#ifndef TRANSACTION_H
|
#ifndef TRANSACTION_H
|
||||||
#define TRANSACTION_H
|
#define TRANSACTION_H
|
||||||
|
|
||||||
|
#include <odb/database.hxx>
|
||||||
|
#include <odb/transaction.hxx>
|
||||||
|
|
||||||
class Transaction
|
class Transaction
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Transaction();
|
Transaction();
|
||||||
~Transaction();
|
~Transaction();
|
||||||
|
|
||||||
|
void commit();
|
||||||
|
|
||||||
|
private:
|
||||||
|
odb::transaction *m_tr;
|
||||||
|
static bool m_inTransaction;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TRANSACTION_H
|
#endif // TRANSACTION_H
|
||||||
|
|||||||
Reference in New Issue
Block a user