summaryrefslogtreecommitdiff
path: root/src/tangara/database/database.cpp
diff options
context:
space:
mode:
authorcooljqln <cooljqln@noreply.codeberg.org>2024-09-19 04:44:16 +0000
committercooljqln <cooljqln@noreply.codeberg.org>2024-09-19 04:44:16 +0000
commit1eddfe97d9398215d4512785c669cf7cc94b6223 (patch)
tree6b7223e9c0e677705ec3ccfd5846f8fe0cdebeb1 /src/tangara/database/database.cpp
parent9aa77ec5ad369cd7d5ca46d475df29d971416a73 (diff)
parent7f43d4d1265ce7f456b36f51987c812d35bcd616 (diff)
downloadtangara-fw-1eddfe97d9398215d4512785c669cf7cc94b6223.tar.gz
Merge pull request 'daniel/persistent-positions' (#104) from daniel/persistent-positions into main
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/104 Reviewed-by: cooljqln <cooljqln@noreply.codeberg.org>
Diffstat (limited to 'src/tangara/database/database.cpp')
-rw-r--r--src/tangara/database/database.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/tangara/database/database.cpp b/src/tangara/database/database.cpp
index 64451f48..9d0de695 100644
--- a/src/tangara/database/database.cpp
+++ b/src/tangara/database/database.cpp
@@ -44,6 +44,7 @@
#include "memory_resource.hpp"
#include "result.hpp"
#include "tasks.hpp"
+#include "database.hpp"
namespace database {
@@ -269,6 +270,24 @@ auto Database::getTrack(TrackId id) -> std::shared_ptr<Track> {
return std::make_shared<Track>(data, tags);
}
+auto Database::getTrackID(std::string path) -> std::optional<TrackId> {
+ std::string raw_data;
+ if (!db_->Get(leveldb::ReadOptions(), EncodePathKey(path), &raw_data).ok()) {
+ return {};
+ }
+ return BytesToTrackId(raw_data);
+}
+
+auto Database::setTrackData(TrackId id, const TrackData& data) -> void {
+ std::string key = EncodeDataKey(id);
+ std::string raw_val = EncodeDataValue(data);
+
+ auto res = db_->Put(leveldb::WriteOptions(), key, raw_val);
+ if (!res.ok()) {
+ ESP_LOGI(kTag, "Updating track data failed for track ID: %lu", id);
+ }
+}
+
auto Database::getIndexes() -> std::vector<IndexInfo> {
// TODO(jacqueline): This probably needs to be async? When we have runtime
// configurable indexes, they will need to come from somewhere.