Clang: Cleanup transaction statements in the database

Change-Id: I795248492fe952c230fd3a9cf8bf16f3c831f161
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Marco Bubke
2018-04-04 10:38:04 +02:00
parent 1b9469aa85
commit 9d7225d283
7 changed files with 169 additions and 58 deletions

View File

@@ -38,9 +38,10 @@
namespace Sqlite {
using namespace std::chrono_literals;
class ReadStatement;
class WriteStatement;
class ReadWriteStatement;
class SQLITE_EXPORT Database final : public TransactionInterface
{
@@ -55,10 +56,10 @@ public:
Database();
Database(Utils::PathString &&databaseFilePath,
JournalMode journalMode=JournalMode::Delete);
JournalMode journalMode=JournalMode::Wal);
Database(Utils::PathString &&databaseFilePath,
std::chrono::milliseconds busyTimeout = {},
JournalMode journalMode=JournalMode::Delete);
std::chrono::milliseconds busyTimeout = 1000ms,
JournalMode journalMode=JournalMode::Wal);
~Database();
Database(const Database &) = delete;
@@ -106,27 +107,28 @@ public:
return m_databaseBackend.totalChangesCount();
}
private:
void deferredBegin();
void immediateBegin();
void exclusiveBegin();
void commit();
void rollback();
void lock();
void unlock();
private:
void initializeTables();
void registerTransactionStatements();
void deleteTransactionStatements();
std::mutex &databaseMutex() { return m_databaseMutex; }
class Statements;
private:
Utils::PathString m_databaseFilePath;
DatabaseBackend m_databaseBackend;
std::vector<Table> m_sqliteTables;
std::unique_ptr<ReadWriteStatement> m_deferredBeginStatement;
std::unique_ptr<ReadWriteStatement> m_immediateBeginStatement;
std::unique_ptr<ReadWriteStatement> m_exclusiveBeginStatement;
std::unique_ptr<ReadWriteStatement> m_commitBeginStatement;
std::unique_ptr<ReadWriteStatement> m_rollbackBeginStatement;
std::mutex m_databaseMutex;
std::unique_ptr<Statements> m_statements;
std::chrono::milliseconds m_busyTimeout;
JournalMode m_journalMode = JournalMode::Wal;
OpenMode m_openMode = OpenMode::ReadWrite;