summaryrefslogtreecommitdiff
path: root/src/tangara/database/database.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-09-19 15:03:43 +1000
committerjacqueline <me@jacqueline.id.au>2024-09-19 15:03:43 +1000
commit9c95c2b4222da1fb31855f3985ab96d90865086d (patch)
tree8a5bdca0fdffa3720cbef7b683295f629ce308da /src/tangara/database/database.cpp
parent111085b857249a9442e118a5e37a1732716da6a2 (diff)
parent1eddfe97d9398215d4512785c669cf7cc94b6223 (diff)
downloadtangara-fw-9c95c2b4222da1fb31855f3985ab96d90865086d.tar.gz
Merge branch 'main' of codeberg.org:cool-tech-zone/tangara-fw
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.