diff options
Diffstat (limited to 'src/libs/sqlite/sqlitedatabase.cpp')
-rw-r--r-- | src/libs/sqlite/sqlitedatabase.cpp | 46 |
1 files changed, 41 insertions, 5 deletions
diff --git a/src/libs/sqlite/sqlitedatabase.cpp b/src/libs/sqlite/sqlitedatabase.cpp index ef5205484c..084fd3dd1e 100644 --- a/src/libs/sqlite/sqlitedatabase.cpp +++ b/src/libs/sqlite/sqlitedatabase.cpp @@ -25,9 +25,10 @@ #include "sqlitedatabase.h" +#include "sqlitereadwritestatement.h" +#include "sqlitesessions.h" #include "sqlitetable.h" #include "sqlitetransaction.h" -#include "sqlitereadwritestatement.h" #include <QFileInfo> @@ -51,6 +52,7 @@ public: ReadWriteStatement exclusiveBegin{"BEGIN EXCLUSIVE", database}; ReadWriteStatement commitBegin{"COMMIT", database}; ReadWriteStatement rollbackBegin{"ROLLBACK", database}; + Sessions sessions{database, "main", "databaseSessions"}; }; Database::Database() @@ -60,21 +62,29 @@ Database::Database() Database::Database(Utils::PathString &&databaseFilePath, JournalMode journalMode) : Database(std::move(databaseFilePath), 1000ms, journalMode) -{ -} +{} Database::Database(Utils::PathString &&databaseFilePath, std::chrono::milliseconds busyTimeout, JournalMode journalMode) - : m_databaseBackend(*this), - m_busyTimeout(busyTimeout) + : m_databaseBackend(*this) + , m_busyTimeout(busyTimeout) { setJournalMode(journalMode); open(std::move(databaseFilePath)); + +#ifndef QT_NO_DEBUG + execute("PRAGMA reverse_unordered_selects=1"); +#endif } Database::~Database() = default; +void Database::activateLogging() +{ + DatabaseBackend::activateLogging(); +} + void Database::open() { m_databaseBackend.open(m_databaseFilePath, m_openMode); @@ -131,6 +141,16 @@ void Database::setDatabaseFilePath(Utils::PathString &&databaseFilePath) m_databaseFilePath = std::move(databaseFilePath); } +void Database::setAttachedTables(const Utils::SmallStringVector &tables) +{ + m_statements->sessions.setAttachedTables(tables); +} + +void Database::applyAndUpdateSessions() +{ + m_statements->sessions.applyAndUpdateSessions(); +} + const Utils::PathString &Database::databaseFilePath() const { return m_databaseFilePath; @@ -210,6 +230,22 @@ void Database::rollback() m_statements->rollbackBegin.execute(); } +void Database::immediateSessionBegin() +{ + m_statements->immediateBegin.execute(); + m_statements->sessions.create(); +} +void Database::sessionCommit() +{ + m_statements->sessions.commit(); + m_statements->commitBegin.execute(); +} +void Database::sessionRollback() +{ + m_statements->sessions.rollback(); + m_statements->rollbackBegin.execute(); +} + void Database::lock() { m_databaseMutex.lock(); |