summaryrefslogtreecommitdiff
path: root/src/tangara/database
diff options
context:
space:
mode:
authorailurux <ailurux@noreply.codeberg.org>2024-09-24 05:47:18 +0000
committerailurux <ailurux@noreply.codeberg.org>2024-09-24 05:47:18 +0000
commite46582ce0981e09f55eaee92f522a17c02fb2288 (patch)
treee1f1ccc81867a9b32b18446ca19e613a9f2886c4 /src/tangara/database
parent5e43b422182b300074a2d2e02736557d34434996 (diff)
parentc1d89e79482fb219e343797ecfbc34563097c94d (diff)
downloadtangara-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.cpp5
-rw-r--r--src/tangara/database/track.cpp1
-rw-r--r--src/tangara/database/track.hpp5
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;