diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-09-19 15:03:43 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-09-19 15:03:43 +1000 |
| commit | 9c95c2b4222da1fb31855f3985ab96d90865086d (patch) | |
| tree | 8a5bdca0fdffa3720cbef7b683295f629ce308da /src/tangara/database/database.cpp | |
| parent | 111085b857249a9442e118a5e37a1732716da6a2 (diff) | |
| parent | 1eddfe97d9398215d4512785c669cf7cc94b6223 (diff) | |
| download | tangara-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.cpp | 19 |
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. |
