summaryrefslogtreecommitdiff
path: root/src/database
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-06-19 08:51:34 +1000
committerjacqueline <me@jacqueline.id.au>2023-06-19 08:51:34 +1000
commit6ff8b5886ef91ed46dba08686900d519f6c9c62d (patch)
tree133daa91898e047fd93a5e83ba6990af2904e5a1 /src/database
parent4e5dba158367f9b8b440e6c5051c95d9c22b76d7 (diff)
downloadtangara-fw-6ff8b5886ef91ed46dba08686900d519f6c9c62d.tar.gz
Support playing tracks by track id
Diffstat (limited to 'src/database')
-rw-r--r--src/database/database.cpp12
-rw-r--r--src/database/include/database.hpp2
2 files changed, 14 insertions, 0 deletions
diff --git a/src/database/database.cpp b/src/database/database.cpp
index a96b3eab..ac5e4873 100644
--- a/src/database/database.cpp
+++ b/src/database/database.cpp
@@ -229,6 +229,18 @@ auto Database::Update() -> std::future<void> {
});
}
+auto Database::GetTrackPath(TrackId id)
+ -> std::future<std::optional<std::string>> {
+ return worker_task_->Dispatch<std::optional<std::string>>(
+ [=, this]() -> std::optional<std::string> {
+ auto track_data = dbGetTrackData(id);
+ if (track_data) {
+ return track_data->filepath();
+ }
+ return {};
+ });
+}
+
auto Database::GetTracks(std::size_t page_size) -> std::future<Result<Track>*> {
return worker_task_->Dispatch<Result<Track>*>([=, this]() -> Result<Track>* {
Continuation<Track> c{.iterator = nullptr,
diff --git a/src/database/include/database.hpp b/src/database/include/database.hpp
index 1a8388e8..8fecc5f6 100644
--- a/src/database/include/database.hpp
+++ b/src/database/include/database.hpp
@@ -82,6 +82,8 @@ class Database {
auto Update() -> std::future<void>;
+ auto GetTrackPath(TrackId id) -> std::future<std::optional<std::string>>;
+
auto GetTracks(std::size_t page_size) -> std::future<Result<Track>*>;
auto GetDump(std::size_t page_size) -> std::future<Result<std::string>*>;