From 4a3e742c009e5c6b3fa71600d5e7e29c0adcdfcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr> Date: Tue, 9 Nov 2021 09:54:16 +0100 Subject: [PATCH] Media: Index artist_id column refs #386 --- src/Media.cpp | 13 ++++++++++++- src/Media.h | 1 + src/database/migrations/migration33-34.sql | 1 + test/unittest/DbModelTests.cpp | 1 + 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Media.cpp b/src/Media.cpp index e82721d64..ae5c7a28d 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 da0b964f7..3b8ce9e9d 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 8409c7af6..8e64cc6bf 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 f9ff6b09b..ae16e857d 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", -- GitLab