From ceba508593fbb2f897dfa6ba38ec3839e62d85a8 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 13 Oct 2023 15:29:06 +1100 Subject: Add modified time to TrackData --- src/database/database.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/database/database.cpp') 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 +#include #include #include @@ -200,13 +201,16 @@ auto Database::Update() -> std::future { // 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 modified{info.fdate, info.ftime}; + std::shared_ptr 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 { TrackId id = dbMintNewTrackId(); ESP_LOGI(kTag, "recording new 0x%lx", id); - auto data = std::make_shared(id, path, hash); + auto data = std::make_shared(id, path, hash, modified); + dbPutTrackData(*data); dbPutHash(hash, id); auto t = std::make_shared(data, tags); @@ -239,7 +244,8 @@ auto Database::Update() -> std::future { std::shared_ptr 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(*existing_hash, path, hash); + auto new_data = + std::make_shared(*existing_hash, path, hash, modified); dbPutTrackData(*new_data); auto t = std::make_shared(new_data, tags); dbCreateIndexesForTrack(*t); -- cgit v1.2.3