From 43537798108ce240f1d1131db8611d0bf11a3e0c Mon Sep 17 00:00:00 2001 From: ailurux Date: Thu, 12 Sep 2024 17:35:22 +1000 Subject: WIP: Add last_position field to track data and start on implementation --- src/tangara/database/database.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/tangara/database/database.cpp') 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 { return std::make_shared(data, tags); } +auto Database::getTrackID(std::string path) -> std::optional { + 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 { // TODO(jacqueline): This probably needs to be async? When we have runtime // configurable indexes, they will need to come from somewhere. -- cgit v1.2.3