From b9e06d9a139e6d9a6d509f500beee97d0d071602 Mon Sep 17 00:00:00 2001 From: yyamashita Date: Sat, 15 Aug 2026 20:12:25 +0900 Subject: Add site-wide search for bands and artists Adds a nav search box and /search route backed by a LIKE-based searchAll() query over band name/area/description and artist name. --- app/lib/db.server.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'app/lib/db.server.ts') diff --git a/app/lib/db.server.ts b/app/lib/db.server.ts index 37d819b..e554d75 100644 --- a/app/lib/db.server.ts +++ b/app/lib/db.server.ts @@ -481,6 +481,25 @@ function buildSnapshot(band: Band, links: BandLink[], members: BandMemberRow[]): }); } +// ── Search ──────────────────────────────────────────────────────────────────── + +export interface SearchResults { + bands: Band[]; + artists: Artist[]; +} + +export function searchAll(query: string): SearchResults { + const db = getDb(); + const q = `%${query}%`; + const bands = db + .prepare("SELECT * FROM bands WHERE name LIKE ? OR area LIKE ? OR description LIKE ? ORDER BY name LIMIT 50") + .all(q, q, q) as Band[]; + const artists = db + .prepare("SELECT * FROM artists WHERE name LIKE ? ORDER BY name LIMIT 50") + .all(q) as Artist[]; + return { bands, artists }; +} + // ── Artist queries ──────────────────────────────────────────────────────────── export function listArtists(): Artist[] { -- cgit v1.2.3