Optimized diff scan by not pulling the whole track columns

This commit is contained in:
emeric
2025-07-06 11:36:28 +02:00
parent 1b73ae1e8c
commit 25073b3ebc
4 changed files with 31 additions and 4 deletions
@@ -63,6 +63,7 @@ namespace lms::scanner
}
} // namespace
AudioFileScanner::AudioFileScanner(db::Db& db, const ScannerSettings& settings)
: _db{ db }
, _settings{ settings }
@@ -92,10 +93,10 @@ namespace lms::scanner
db::Session& dbSession{ _db.getTLSSession() };
auto transaction{ dbSession.createReadTransaction() };
const db::Track::pointer track{ db::Track::findByPath(dbSession, file.filePath) };
return !track
|| track->getLastWriteTime() != file.lastWriteTime
|| track->getScanVersion() != _settings.audioScanVersion;
std::optional<db::FileInfo> fileInfo{ db::Track::findFileInfo(dbSession, file.filePath) };
return !fileInfo
|| fileInfo->lastWrittenTime != file.lastWriteTime
|| fileInfo->scanVersion != _settings.audioScanVersion;
}
std::unique_ptr<IFileScanOperation> AudioFileScanner::createScanOperation(FileToScan&& fileToScan) const