summaryrefslogtreecommitdiff
path: root/src/tangara/database/database.cpp
diff options
context:
space:
mode:
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.