Fixed codeQL issue + fixed bad db migration. fixes #308

This commit is contained in:
emeric
2023-02-22 22:18:24 +01:00
parent 492e2d4fc6
commit 96fab5d57e
2 changed files with 9 additions and 11 deletions
@@ -126,6 +126,7 @@ class Track : public Object<Track, TrackId>
void setTotalDisc(std::optional<int> totalDisc) { _totalDisc = totalDisc ? *totalDisc : 0; } void setTotalDisc(std::optional<int> totalDisc) { _totalDisc = totalDisc ? *totalDisc : 0; }
void setDiscSubtitle(const std::string& name) { _discSubtitle = name; } void setDiscSubtitle(const std::string& name) { _discSubtitle = name; }
void setName(const std::string& name) { _name = std::string(name, 0, _maxNameLength); } void setName(const std::string& name) { _name = std::string(name, 0, _maxNameLength); }
void setPath(const std::filesystem::path& filePath) { _filePath = filePath; }
void setDuration(std::chrono::milliseconds duration) { _duration = duration; } void setDuration(std::chrono::milliseconds duration) { _duration = duration; }
void setLastWriteTime(Wt::WDateTime time) { _fileLastWrite = time; } void setLastWriteTime(Wt::WDateTime time) { _fileLastWrite = time; }
void setAddedTime(Wt::WDateTime time) { _fileAdded = time; } void setAddedTime(Wt::WDateTime time) { _fileAdded = time; }
@@ -287,19 +287,16 @@ namespace Scanner
{ {
std::vector<Track::pointer> duplicateTracks {Track::findByMBID(dbSession, *trackInfo->trackMBID)}; std::vector<Track::pointer> duplicateTracks {Track::findByMBID(dbSession, *trackInfo->trackMBID)};
if (!track) // find for existing MBIDs as the file may have just been moved
if (!track && duplicateTracks.size() == 1)
{ {
// find for existing MBIDs as the file may have just been moved Track::pointer otherTrack {duplicateTracks.front()};
const auto duplicateTracks {Track::findByMBID(dbSession, *trackInfo->trackMBID)}; std::error_code ec;
if (duplicateTracks.size() == 1) if (!std::filesystem::exists(otherTrack->getPath(), ec))
{ {
Track::pointer otherTrack {duplicateTracks.front()}; LMS_LOG(DBUPDATER, DEBUG) << "Considering track '" << file.string() << "' moved from '" << otherTrack->getPath() << "'";
std::error_code ec; track = otherTrack;
if (!std::filesystem::exists(otherTrack->getPath(), ec)) track.modify()->setPath(file);
{
LMS_LOG(DBUPDATER, DEBUG) << "Considering track '" << file.string() << "' moved from '" << otherTrack->getPath() << "'";
track = otherTrack;
}
} }
} }