diff --git a/src/Media.cpp b/src/Media.cpp index e82721d64b114a8dcfa629baa6b02230cfd44ee1..ae5c7a28d0357dff5975ccf6468f62c7304f5094 100644 --- a/src/Media.cpp +++ b/src/Media.cpp @@ -1456,6 +1456,9 @@ void Media::createIndexes( sqlite::Connection* connection ) sqlite::Tools::executeRequest( connection, index( Indexes::GenreId, Settings::DbModelVersion ) ); + sqlite::Tools::executeRequest( connection, + index( Indexes::ArtistId, + Settings::DbModelVersion ) ); } std::string Media::schema( const std::string& tableName, uint32_t dbModel ) @@ -1958,6 +1961,10 @@ std::string Media::index( Indexes index, uint32_t dbModel ) assert( dbModel >= 34 ); return "CREATE INDEX " + indexName( index, dbModel ) + " ON " + Table::Name + "(genre_id)"; + case Indexes::ArtistId: + assert( dbModel >= 34 ); + return "CREATE INDEX " + indexName( index, dbModel ) + + " ON " + Table::Name + "(artist_id)"; default: assert( !"Invalid index provided" ); } @@ -2013,6 +2020,9 @@ std::string Media::indexName( Indexes index, uint32_t dbModel ) case Indexes::GenreId: assert( dbModel >= 34 ); return "media_genre_id_idx"; + case Indexes::ArtistId: + assert( dbModel >= 34 ); + return "media_artist_id_idx"; default: assert( !"Invalid index provided" ); } @@ -2061,7 +2071,8 @@ bool Media::checkDbModel( MediaLibraryPtr ml ) checkIndex( ml->getConn(), Indexes::PlayCount ) && checkIndex( ml->getConn(), Indexes::Title ) && checkIndex( ml->getConn(), Indexes::FileName ) && - checkIndex( ml->getConn(), Indexes::GenreId ); + checkIndex( ml->getConn(), Indexes::GenreId ) && + checkIndex( ml->getConn(), Indexes::ArtistId ); } bool Media::addLabel( LabelPtr label ) diff --git a/src/Media.h b/src/Media.h index da0b964f71ff110947a9e01380e681fdb688b0fc..3b8ce9e9d4b0b49434ed972431e615fb2f33cd18 100644 --- a/src/Media.h +++ b/src/Media.h @@ -97,6 +97,7 @@ class Media : public IMedia, Title, FileName, GenreId, + ArtistId, }; // 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 8409c7af64075594e2825dce5c20ff193cffff9a..8e64cc6bf0d31bcb92eecebfd2a3476e07ee15ff 100644 --- a/src/database/migrations/migration33-34.sql +++ b/src/database/migrations/migration33-34.sql @@ -54,6 +54,7 @@ Media::index( Media::Indexes::PlayCount, 34 ), Media::index( Media::Indexes::Title, 34 ), Media::index( Media::Indexes::FileName, 34 ), Media::index( Media::Indexes::GenreId, 34 ), +Media::index( Media::Indexes::ArtistId, 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 f9ff6b09b0700016146e49825a1933d99e8e3efc..ae16e857d2ca0d782deb558d5482a60cc79c5ff4 100644 --- a/test/unittest/DbModelTests.cpp +++ b/test/unittest/DbModelTests.cpp @@ -112,6 +112,7 @@ namespace "index_media_presence", "label_rel_media_id_idx", "media_album_track_idx", + "media_artist_id_idx", "media_duration_idx", "media_filename_idx", "media_folder_id_idx",