aboutsummaryrefslogtreecommitdiff
path: root/src/factory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/factory.cpp')
-rw-r--r--src/factory.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/factory.cpp b/src/factory.cpp
index 3c360d13..f58b66a0 100644
--- a/src/factory.cpp
+++ b/src/factory.cpp
@@ -157,6 +157,8 @@ struct DatabaseContext::Private {
};
private:
+ friend class DatabaseContext;
+
std::string databasePath_{};
bool close_handle_ = true;
sqlite3 *sqlite_handle_{};
@@ -164,6 +166,7 @@ struct DatabaseContext::Private {
PJ_CONTEXT *pjCtxt_ = nullptr;
int recLevel_ = 0;
bool detach_ = false;
+ std::string lastMetadataValue_{};
void closeDB();
@@ -704,6 +707,22 @@ const std::string &DatabaseContext::getPath() const { return d->getPath(); }
// ---------------------------------------------------------------------------
+/** \brief Return a metadata item.
+ *
+ * Value remains valid while this is alive and to the next call to getMetadata
+ */
+const char *DatabaseContext::getMetadata(const char *key) const {
+ auto res =
+ d->run("SELECT value FROM metadata WHERE key = ?", {std::string(key)});
+ if (res.empty()) {
+ return nullptr;
+ }
+ d->lastMetadataValue_ = res[0][0];
+ return d->lastMetadataValue_.c_str();
+}
+
+// ---------------------------------------------------------------------------
+
//! @cond Doxygen_Suppress
DatabaseContextNNPtr DatabaseContext::create(void *sqlite_handle) {