25 #ifndef CARGO_SQLITE_KVSTORE_HPP
26 #define CARGO_SQLITE_KVSTORE_HPP
32 #include <initializer_list>
59 std::unique_lock<std::recursive_mutex>
mLock;
67 explicit KVStore(
const std::string& path);
104 void remove(
const std::string&
key);
112 void set(
const std::string&
key,
const std::string& value);
120 std::string
get(
const std::string&
key);
125 std::vector<std::string>
getKeys();
128 typedef std::lock_guard<std::recursive_mutex>
Lock;
152 #endif // CARGO_SQLITE_KVSTORE_HPP
std::string mPath
Definition: kvstore.hpp:134
bool prefixExists(const std::string &key)
Definition: kvstore.cpp:259
std::unique_ptr< sqlite3::Statement > mGetKeysStmt
Definition: kvstore.hpp:143
A guard struct for thread synchronization and transaction management.
Definition: kvstore.hpp:49
void createFunctions()
Definition: kvstore.cpp:214
void setupDb()
Definition: kvstore.cpp:190
sqlite3::Connection mConn
Definition: kvstore.hpp:135
std::vector< std::string > getKeys()
Returns all stored keys.
Definition: kvstore.cpp:288
bool mIsTransactionCommited
Definition: kvstore.hpp:132
Definition: kvstore.hpp:43
KVStore & operator=(const KVStore &)=delete
size_t mTransactionDepth
Definition: kvstore.hpp:131
KVStore & mKVStore
Definition: kvstore.hpp:60
Declaration of the class managing a sqlite3 database connection.
Definition: connection.hpp:34
Transaction & operator=(const Transaction &)=delete
std::unique_ptr< sqlite3::Statement > mGetKeyExistsStmt
Definition: kvstore.hpp:137
Declaration of the class managing a sqlite3 statement.
~KVStore()
Definition: kvstore.cpp:148
std::unique_ptr< sqlite3::Statement > mGetKeyPrefixExistsStmt
Definition: kvstore.hpp:138
KVStore(const std::string &path)
Definition: kvstore.cpp:137
std::unique_lock< std::recursive_mutex > mLock
Definition: kvstore.hpp:59
std::unique_ptr< sqlite3::Statement > mSetValueStmt
Definition: kvstore.hpp:141
std::string key(const Arg1 &a1, const Args &...args)
Concatenates all parameters into one std::string.
Definition: kvstore-visitor-utils.hpp:60
void set(const std::string &key, const std::string &value)
Stores a single value corresponding to the passed key.
Definition: kvstore.cpp:153
~Transaction()
Definition: kvstore.cpp:114
std::recursive_mutex mMutex
Definition: kvstore.hpp:130
Transaction(KVStore &store)
Definition: kvstore.cpp:100
bool exists(const std::string &key)
Definition: kvstore.cpp:243
std::lock_guard< std::recursive_mutex > Lock
Definition: kvstore.hpp:128
bool mIsOuter
Definition: kvstore.hpp:61
void prepareStatements()
Definition: kvstore.cpp:196
std::unique_ptr< sqlite3::Statement > mGetValueListStmt
Definition: kvstore.hpp:140
std::unique_ptr< sqlite3::Statement > mGetIsEmptyStmt
Definition: kvstore.hpp:139
std::unique_ptr< sqlite3::Statement > mRemoveValuesStmt
Definition: kvstore.hpp:142
bool isEmpty()
Definition: kvstore.cpp:229
void clear()
Clears all the stored data.
Definition: kvstore.cpp:222
void commit()
Definition: kvstore.cpp:126
std::unique_ptr< sqlite3::Statement > mGetValueStmt
Definition: kvstore.hpp:136