From 0c9eb25feed583db6c6107bdc88512a536a77f24 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:50:04 +0100 Subject: [PATCH] Media: Index genre_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 82b254257..e82721d64 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 aebf5ba5f..da0b964f7 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 f948a0c29..8409c7af6 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 faa397e0d..f9ff6b09b 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", -- GitLab