db: Give Artists knowledge about their Media

I also adjust how filtering Artists works so an Artist remains visible
if one of its Media matches the query.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2022-08-23 16:11:09 -04:00
parent 87606f8fac
commit aeeee1417a
2 changed files with 9 additions and 2 deletions

View File

@ -101,7 +101,8 @@ class Table(playlist.Table):
"""Search for artists matching the search text."""
return self.sql("""SELECT artistid FROM album_artist_view
WHERE CASEFOLD(artist) GLOB :glob
OR CASEFOLD(album) GLOB :glob""", glob=glob)
OR CASEFOLD(album) GLOB :glob
OR CASEFOLD(medium) GLOB :glob""", glob=glob)
def do_sql_insert(self, name: str,
mbid: str = "") -> sqlite3.Cursor | None:

View File

@ -171,10 +171,13 @@ class TestArtistTable(tests.util.TestCase):
artist1 = self.table.create("Artist 1")
artist2 = self.table.create("Artist 2")
artist1.add_album(self.sql.albums.create("Album 1", "Artist 1", "1"))
album = self.sql.albums.create("Album 1", "Artist 1", "1")
artist1.add_album(album)
artist1.add_album(self.sql.albums.create("Album 2", "Artist 1", "2"))
artist2.add_album(self.sql.albums.create("Album 3", "Artist 2", "3"))
artist2.add_album(self.sql.albums.create("Album 4", "Artist 2", "4"))
self.sql.media.create(album, "Medium 1", number=1)
self.sql.media.create(album, "Medium 2", number=2)
self.table.filter("*1", now=True)
self.assertSetEqual(self.table.get_filter().keys, {1})
@ -184,6 +187,9 @@ class TestArtistTable(tests.util.TestCase):
self.table.filter("*4", now=True)
self.assertSetEqual(self.table.get_filter().keys, {2})
self.table.filter("medium*", now=True)
self.assertSetEqual(self.table.get_filter().keys, {1})
def test_get_sort_key(self):
"""Test the get_sort_key() function."""
artist1 = self.table.create("Artist 1")