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