From ad2ea5abfbcf71320f13cd3bec5b7bbfb36472f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0ar=C5=ABnas=20Nejus?= Date: Tue, 7 May 2024 20:11:22 +0100 Subject: [PATCH] Remove slow lookups from beetsplug/aura It seems like previously filtering by flexible attributes did not work - I'd receive '{"data": []}' trying to GET `/aura/tracks?filter[play_count]=11` Now this works, not only for tracks, but for `/aura/artists` and `/aura/albums` too. Additionally, this improves `/aura/tracks` response time significantly. I tried loading the default of 500 tracks from my library: On `master`, it took ~20s After this commit, it takes under 1s. --- beetsplug/aura.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/beetsplug/aura.py b/beetsplug/aura.py index e3e596d364..7bb877eeb7 100644 --- a/beetsplug/aura.py +++ b/beetsplug/aura.py @@ -182,8 +182,9 @@ def translate_filters(self): converter = self.get_attribute_converter(beets_attr) value = converter(value) # Add exact match query to list - # Use a slow query so it works with all fields - queries.append(MatchQuery(beets_attr, value, fast=False)) + queries.append( + self.model_cls.field_query(beets_attr, value, MatchQuery) + ) # NOTE: AURA doesn't officially support multiple queries return AndQuery(queries)