summaryrefslogtreecommitdiff
path: root/src/database/database.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/database/database.cpp')
-rw-r--r--src/database/database.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/database/database.cpp b/src/database/database.cpp
index 60aa69fc..f86b2c9b 100644
--- a/src/database/database.cpp
+++ b/src/database/database.cpp
@@ -7,6 +7,7 @@
#include "database.hpp"
#include <stdint.h>
+#include <sys/_stdint.h>
#include <algorithm>
#include <cstdint>
@@ -200,13 +201,16 @@ auto Database::Update() -> std::future<void> {
// Stage 2: search for newly added files.
ESP_LOGI(kTag, "scanning for new tracks");
uint64_t num_processed = 0;
- file_gatherer_.FindFiles("", [&](const std::pmr::string& path) {
+ file_gatherer_.FindFiles("", [&](const std::pmr::string& path,
+ const FILINFO& info) {
num_processed++;
events::Ui().Dispatch(event::UpdateProgress{
.stage = event::UpdateProgress::Stage::kScanningForNewTracks,
.val = num_processed,
});
+ std::pair<uint16_t, uint16_t> modified{info.fdate, info.ftime};
+
std::shared_ptr<TrackTags> tags = tag_parser_.ReadAndParseTags(path);
if (!tags || tags->encoding() == Container::kUnsupported) {
// No parseable tags; skip this fiile.
@@ -228,7 +232,8 @@ auto Database::Update() -> std::future<void> {
TrackId id = dbMintNewTrackId();
ESP_LOGI(kTag, "recording new 0x%lx", id);
- auto data = std::make_shared<TrackData>(id, path, hash);
+ auto data = std::make_shared<TrackData>(id, path, hash, modified);
+
dbPutTrackData(*data);
dbPutHash(hash, id);
auto t = std::make_shared<Track>(data, tags);
@@ -239,7 +244,8 @@ auto Database::Update() -> std::future<void> {
std::shared_ptr<TrackData> existing_data = dbGetTrackData(*existing_hash);
if (!existing_data) {
// We found a hash that matches, but there's no data record? Weird.
- auto new_data = std::make_shared<TrackData>(*existing_hash, path, hash);
+ auto new_data =
+ std::make_shared<TrackData>(*existing_hash, path, hash, modified);
dbPutTrackData(*new_data);
auto t = std::make_shared<Track>(new_data, tags);
dbCreateIndexesForTrack(*t);