diff options
| author | ailurux <ailurux@noreply.codeberg.org> | 2024-09-24 05:47:18 +0000 |
|---|---|---|
| committer | ailurux <ailurux@noreply.codeberg.org> | 2024-09-24 05:47:18 +0000 |
| commit | e46582ce0981e09f55eaee92f522a17c02fb2288 (patch) | |
| tree | e1f1ccc81867a9b32b18446ca19e613a9f2886c4 /src/tangara/database | |
| parent | 5e43b422182b300074a2d2e02736557d34434996 (diff) | |
| parent | c1d89e79482fb219e343797ecfbc34563097c94d (diff) | |
| download | tangara-fw-e46582ce0981e09f55eaee92f522a17c02fb2288.tar.gz | |
Merge pull request 'Record play_count in TrackData, incrementing it when tracks finish' (#107) from jqln/play-count into main
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/107
Diffstat (limited to 'src/tangara/database')
| -rw-r--r-- | src/tangara/database/records.cpp | 5 | ||||
| -rw-r--r-- | src/tangara/database/track.cpp | 1 | ||||
| -rw-r--r-- | src/tangara/database/track.hpp | 5 |
3 files changed, 10 insertions, 1 deletions
diff --git a/src/tangara/database/records.cpp b/src/tangara/database/records.cpp index b93ed149..addcc13d 100644 --- a/src/tangara/database/records.cpp +++ b/src/tangara/database/records.cpp @@ -95,6 +95,7 @@ auto EncodeDataValue(const TrackData& track) -> std::string { tag_hashes, cppbor::Uint{track.last_position}, cppbor::Uint{static_cast<unsigned int>(track.type)}, + cppbor::Uint{track.play_count}, }; return val.toString(); } @@ -147,6 +148,10 @@ auto ParseDataValue(const leveldb::Slice& slice) -> std::shared_ptr<TrackData> { } } + if (vals->size() >= 10 && vals->get(9)->type() == cppbor::UINT) { + res->play_count = vals->get(9)->asUint()->unsignedValue(); + } + return res; } diff --git a/src/tangara/database/track.cpp b/src/tangara/database/track.cpp index 51d50a38..49babb6a 100644 --- a/src/tangara/database/track.cpp +++ b/src/tangara/database/track.cpp @@ -302,6 +302,7 @@ auto database::TrackData::clone() const -> std::shared_ptr<TrackData> { data->is_tombstoned = is_tombstoned; data->modified_at = modified_at; data->last_position = last_position; + data->play_count = play_count; data->type = type; return data; } diff --git a/src/tangara/database/track.hpp b/src/tangara/database/track.hpp index 71f40910..65c5cfec 100644 --- a/src/tangara/database/track.hpp +++ b/src/tangara/database/track.hpp @@ -177,7 +177,9 @@ struct TrackData { individual_tag_hashes(&memory::kSpiRamResource), is_tombstoned(false), modified_at(), - last_position(0) {} + last_position(0), + play_count(0), + type(MediaType::kUnknown) {} TrackId id; std::pmr::string filepath; @@ -186,6 +188,7 @@ struct TrackData { bool is_tombstoned; std::pair<uint16_t, uint16_t> modified_at; uint32_t last_position; + uint32_t play_count; MediaType type; TrackData(const TrackData&& other) = delete; |
