Fixed codeQL issue + fixed bad db migration. fixes #308
This commit is contained in:
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user