diff --git a/src/webui/data.py b/src/webui/data.py index 97875ae..d4dbd1c 100644 --- a/src/webui/data.py +++ b/src/webui/data.py @@ -74,6 +74,17 @@ def get_drafts_page( """ pairs = db.drafts_with_ratings(limit=1000) + # Build author lookup for search (draft_name -> "author1 author2 ...") + author_text_by_draft: dict[str, str] = {} + if search: + rows = db.conn.execute( + """SELECT da.draft_name, GROUP_CONCAT(a.name, ' ') as names + FROM draft_authors da JOIN authors a ON da.person_id = a.person_id + GROUP BY da.draft_name""" + ).fetchall() + for r in rows: + author_text_by_draft[r[0]] = r[1] or "" + # Filter filtered = [] for draft, rating in pairs: @@ -84,7 +95,8 @@ def get_drafts_page( if source and draft.source != source: continue if search: - haystack = f"{draft.name} {draft.title} {rating.summary}".lower() + author_names = author_text_by_draft.get(draft.name, "") + haystack = f"{draft.name} {draft.title} {rating.summary} {author_names}".lower() if not all(w in haystack for w in search.lower().split()): continue filtered.append((draft, rating))