diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-09-24 15:24:16 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-09-24 15:24:16 +1000 |
| commit | faddb229fcf1417dd283ae43fb26fbf5b3ceaf19 (patch) | |
| tree | 80dd36ae8422d5625d92fb138bd090b2058fe3f2 /src/tangara/database | |
| parent | 5e43b422182b300074a2d2e02736557d34434996 (diff) | |
| download | tangara-fw-faddb229fcf1417dd283ae43fb26fbf5b3ceaf19.tar.gz | |
Record play_count in TrackData, incrementing it when tracks finish
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; |
