diff --git a/src/Media.cpp b/src/Media.cpp index 82b25425711ce2351105edea01cb072fc393b88c..e82721d64b114a8dcfa629baa6b02230cfd44ee1 100644 --- a/src/Media.cpp +++ b/src/Media.cpp @@ -1453,6 +1453,9 @@ void Media::createIndexes( sqlite::Connection* connection ) sqlite::Tools::executeRequest( connection, index( Indexes::FileName, Settings::DbModelVersion ) ); + sqlite::Tools::executeRequest( connection, + index( Indexes::GenreId, + Settings::DbModelVersion ) ); } std::string Media::schema( const std::string& tableName, uint32_t dbModel ) @@ -1951,6 +1954,10 @@ std::string Media::index( Indexes index, uint32_t dbModel ) assert( dbModel >= 34 ); return "CREATE INDEX " + indexName( index, dbModel ) + " ON " + Table::Name + "(filename)"; + case Indexes::GenreId: + assert( dbModel >= 34 ); + return "CREATE INDEX " + indexName( index, dbModel ) + + " ON " + Table::Name + "(genre_id)"; default: assert( !"Invalid index provided" ); } @@ -2003,6 +2010,9 @@ std::string Media::indexName( Indexes index, uint32_t dbModel ) case Indexes::FileName: assert( dbModel >= 34 ); return "media_filename_idx"; + case Indexes::GenreId: + assert( dbModel >= 34 ); + return "media_genre_id_idx"; default: assert( !"Invalid index provided" ); } @@ -2050,7 +2060,8 @@ bool Media::checkDbModel( MediaLibraryPtr ml ) checkIndex( ml->getConn(), Indexes::ReleaseDate ) && checkIndex( ml->getConn(), Indexes::PlayCount ) && checkIndex( ml->getConn(), Indexes::Title ) && - checkIndex( ml->getConn(), Indexes::FileName ); + checkIndex( ml->getConn(), Indexes::FileName ) && + checkIndex( ml->getConn(), Indexes::GenreId ); } bool Media::addLabel( LabelPtr label ) diff --git a/src/Media.h b/src/Media.h index aebf5ba5ffe7f4e5d0701fbf4ae73fa74653b198..da0b964f71ff110947a9e01380e681fdb688b0fc 100644 --- a/src/Media.h +++ b/src/Media.h @@ -96,6 +96,7 @@ class Media : public IMedia, PlayCount, Title, FileName, + GenreId, }; // Those should be private, however the standard states that the expression diff --git a/src/database/migrations/migration33-34.sql b/src/database/migrations/migration33-34.sql index f948a0c29083f9061f2f8d4f4ea170e847a78a67..8409c7af64075594e2825dce5c20ff193cffff9a 100644 --- a/src/database/migrations/migration33-34.sql +++ b/src/database/migrations/migration33-34.sql @@ -53,6 +53,7 @@ Media::index( Media::Indexes::ReleaseDate, 34 ), Media::index( Media::Indexes::PlayCount, 34 ), Media::index( Media::Indexes::Title, 34 ), Media::index( Media::Indexes::FileName, 34 ), +Media::index( Media::Indexes::GenreId, 34 ), Album::trigger( Album::Triggers::IsPresent, 34 ), Artist::trigger( Artist::Triggers::HasTrackPresent, 34 ), Thumbnail::trigger( Thumbnail::Triggers::AutoDeleteMedia, 34 ), diff --git a/test/unittest/DbModelTests.cpp b/test/unittest/DbModelTests.cpp index faa397e0ddf20a6a793e851b5b18451a87f790d9..f9ff6b09b0700016146e49825a1933d99e8e3efc 100644 --- a/test/unittest/DbModelTests.cpp +++ b/test/unittest/DbModelTests.cpp @@ -115,6 +115,7 @@ namespace "media_duration_idx", "media_filename_idx", "media_folder_id_idx", + "media_genre_id_idx", "media_group_creation_date", "media_group_duration", "media_group_forced_singleton",