Files
Sourcetrail/src/lib/data/storage/sqlite/SqliteStorage.h
T
mlangkabel dfc6d88432 build: search headers in all source directories
* removed paths in include directives
* changed cmake to provide necessary header search paths
* changed name of version.h to productVersion.h due to name conflict
2018-09-18 19:00:18 +02:00

71 lines
1.7 KiB
C++

#ifndef SQLITE_STORAGE_H
#define SQLITE_STORAGE_H
#include "CppSQLite3.h"
#include "SqliteDatabaseIndex.h"
#include "FilePath.h"
class SqliteStorageMigration;
class TimeStamp;
class SqliteStorage
{
public:
SqliteStorage(const FilePath& dbFilePath);
virtual ~SqliteStorage();
void setup();
void clear();
size_t getVersion() const;
void setVersion(size_t version);
void beginTransaction();
void commitTransaction();
void rollbackTransaction();
void optimizeMemory() const;
FilePath getDbFilePath() const;
bool isEmpty() const;
bool isIncompatible() const;
void setTime();
TimeStamp getTime() const;
protected:
void setupMetaTable();
void clearMetaTable();
bool executeStatement(const std::string& statement) const;
bool executeStatement(CppSQLite3Statement& statement) const;
int executeStatementScalar(const std::string& statement, const int nullValue) const;
int executeStatementScalar(CppSQLite3Statement& statement, const int nullValue) const;
CppSQLite3Query executeQuery(const std::string& statement) const;
CppSQLite3Query executeQuery(CppSQLite3Statement& statement) const;
bool hasTable(const std::string& tableName) const;
std::string getMetaValue(const std::string& key) const;
void insertOrUpdateMetaValue(const std::string& key, const std::string& value);
mutable CppSQLite3DB m_database;
FilePath m_dbFilePath;
private:
virtual size_t getStaticVersion() const = 0;
virtual void clearTables() = 0;
virtual void setupTables() = 0;
virtual void setupPrecompiledStatements() = 0;
std::vector<std::pair<int, SqliteDatabaseIndex>> m_indices;
bool m_precompiledStatementsInitialized = false;
friend SqliteStorageMigration;
};
#endif // SQLITE_STORAGE_H