add album artists filter
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 23 Jul 2022 00:49:23 +0000 (02:49 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 23 Jul 2022 00:49:23 +0000 (02:49 +0200)
music_assistant/controllers/music/artists.py
music_assistant/helpers/database.py

index b112c28bf67e244a33bbfc61d61c50f126a61745..489a3d2dec3514dc0c4a741bec7666f4c0525489 100644 (file)
@@ -17,6 +17,7 @@ from music_assistant.models.media_items import (
     Artist,
     ItemMapping,
     MediaType,
+    PagedItems,
     Track,
 )
 from music_assistant.models.music_provider import MusicProvider
@@ -29,6 +30,26 @@ class ArtistsController(MediaControllerBase[Artist]):
     media_type = MediaType.ARTIST
     item_cls = Artist
 
+    async def album_artists(
+        self,
+        in_library: Optional[bool] = None,
+        search: Optional[str] = None,
+        limit: int = 500,
+        offset: int = 0,
+        order_by: str = "sort_name",
+    ) -> PagedItems:
+        """Get in-database album artists."""
+        return await self.db_items(
+            in_library=in_library,
+            search=search,
+            limit=limit,
+            offset=offset,
+            order_by=order_by,
+            query_parts=[
+                "artists.sort_name in (select albums.sort_artist from albums)"
+            ],
+        )
+
     async def toptracks(
         self,
         item_id: Optional[str] = None,
index 2791d684585370026e9df8ef741c9ecafd3e9502..2ad21880aafeefd29a82e00f5e23370bee4adbf1 100755 (executable)
@@ -95,8 +95,7 @@ class Database:
         params: Optional[dict] = None,
     ) -> int:
         """Get row count for given custom query."""
-        query = query.split("from", 1)[-1].split("FROM", 1)[-1]
-        query = f"SELECT count() FROM {query}"
+        query = f"SELECT count() FROM ({query})"
         if result := await self._db.fetch_one(query, params):
             return result[0]
         return 0