From 39ca55e8fab4b0d8946b8a0aa890b24dd28b5315 Mon Sep 17 00:00:00 2001 From: emeric Date: Wed, 4 Sep 2024 20:07:37 +0200 Subject: [PATCH] Added compilation tag support, fixes #520 --- src/libs/database/impl/Migration.cpp | 11 +++++++++- .../database/include/database/Release.hpp | 4 ++++ src/libs/database/test/Release.cpp | 20 +++++++++++++++++++ src/libs/metadata/impl/Parser.cpp | 1 + src/libs/metadata/include/metadata/Types.hpp | 1 + src/libs/metadata/test/Parser.cpp | 2 ++ .../scanner/impl/ScanStepScanFiles.cpp | 2 ++ src/libs/subsonic/impl/responses/Album.cpp | 17 ++++------------ src/tools/metadata/LmsMetadata.cpp | 4 +++- 9 files changed, 47 insertions(+), 15 deletions(-) diff --git a/src/libs/database/impl/Migration.cpp b/src/libs/database/impl/Migration.cpp index 59b9576b..8fb2ae7b 100644 --- a/src/libs/database/impl/Migration.cpp +++ b/src/libs/database/impl/Migration.cpp @@ -35,7 +35,7 @@ namespace lms::db { namespace { - static constexpr Version LMS_DATABASE_VERSION{ 65 }; + static constexpr Version LMS_DATABASE_VERSION{ 66 }; } VersionInfo::VersionInfo() @@ -736,6 +736,14 @@ SELECT session.getDboSession()->execute("UPDATE scan_settings SET scan_version = scan_version + 1"); } + void migrateFromV65(Session& session) + { + session.getDboSession()->execute("ALTER TABLE release ADD is_compilation BOOLEAN NOT NULL DEFAULT(false)"); + + // Just increment the scan version of the settings to make the next scheduled scan rescan everything + session.getDboSession()->execute("UPDATE scan_settings SET scan_version = scan_version + 1"); + } + bool doDbMigration(Session& session) { static const std::string outdatedMsg{ "Outdated database, please rebuild it (delete the .db file and restart)" }; @@ -777,6 +785,7 @@ SELECT { 62, migrateFromV62 }, { 63, migrateFromV63 }, { 64, migrateFromV64 }, + { 65, migrateFromV65 }, }; bool migrationPerformed{}; diff --git a/src/libs/database/include/database/Release.hpp b/src/libs/database/include/database/Release.hpp index cf3efdde..1b8dcbe1 100644 --- a/src/libs/database/include/database/Release.hpp +++ b/src/libs/database/include/database/Release.hpp @@ -228,6 +228,7 @@ namespace lms::db std::chrono::milliseconds getDuration() const; Wt::WDateTime getLastWritten() const; std::string_view getArtistDisplayName() const { return _artistDisplayName; } + bool isCompilation() const { return _isCompilation; } std::size_t getTrackCount() const; std::vector> getReleaseTypes() const; std::vector getLabelNames() const; @@ -241,6 +242,7 @@ namespace lms::db void setGroupMBID(const std::optional& mbid) { _groupMBID = mbid ? mbid->getAsString() : ""; } void setTotalDisc(std::optional totalDisc) { _totalDisc = totalDisc; } void setArtistDisplayName(std::string_view name) { _artistDisplayName = name; } + void setCompilation(bool value) { _isCompilation = value; } void clearLabels(); void clearReleaseTypes(); void addLabel(ObjectPtr