Distinguish initial scan to import last time write as added time, ref #601

This commit is contained in:
emeric
2025-01-24 17:59:25 +01:00
parent cfa59cb32c
commit 534df42f9d
8 changed files with 58 additions and 15 deletions
@@ -29,6 +29,7 @@ namespace lms::scanner
{
db::MediaLibraryId id;
std::filesystem::path rootDirectory;
bool firstScan{};
auto operator<=>(const MediaLibraryInfo& other) const = default;
};
@@ -395,7 +395,12 @@ namespace lms::scanner
newSettings.updatePeriod = scanSettings->getUpdatePeriod();
MediaLibrary::find(_db.getTLSSession(), [&](const MediaLibrary::pointer& mediaLibrary) {
newSettings.mediaLibraries.push_back(MediaLibraryInfo{ .id = mediaLibrary->getId(), .rootDirectory = mediaLibrary->getPath().lexically_normal() });
MediaLibraryInfo info;
info.firstScan = mediaLibrary->isEmpty();
info.id = mediaLibrary->getId();
info.rootDirectory = mediaLibrary->getPath().lexically_normal();
newSettings.mediaLibraries.push_back(info);
});
{
@@ -479,19 +479,14 @@ namespace lms::scanner
if (!track)
{
track = dbSession.create<db::Track>();
track.modify()->setAbsoluteFilePath(_file);
const core::PartialDateTime addedTime{
fileInfo->lastWriteTime.date().year(),
static_cast<unsigned>(fileInfo->lastWriteTime.date().month()),
static_cast<unsigned>(fileInfo->lastWriteTime.date().day()),
static_cast<unsigned>(fileInfo->lastWriteTime.time().hour()),
static_cast<unsigned>(fileInfo->lastWriteTime.time().minute()),
static_cast<unsigned>(fileInfo->lastWriteTime.time().second())
};
track.modify()->setAddedTime(addedTime); // may be erased by encodingTime
added = true;
track.modify()->setAbsoluteFilePath(_file);
if (!_parsedTrack->encodingTime.isValid())
{
const core::PartialDateTime addedTime{ core::PartialDateTime::fromWtDateTime(_mediaLibrary.firstScan ? fileInfo->lastWriteTime : Wt::WDateTime::currentDateTime()) };
track.modify()->setAddedTime(addedTime); // may be erased by encodingTime
}
}
// Track related data