import sqlite3 from typing import Optional from fastapi import APIRouter def make_router(settings, db_factory): router = APIRouter(prefix="/api") @router.get("/search") def search(q: str, date: Optional[str] = None): if not q.strip(): return [] db: sqlite3.Connection = db_factory() rows = db.execute(""" SELECT u.*, r.name as room_name, s.name as speaker_name FROM utterances_fts fts JOIN utterances u ON u.id = fts.rowid JOIN rooms r ON u.room_id = r.id LEFT JOIN speakers s ON u.speaker_id = s.id WHERE utterances_fts MATCH ? ORDER BY u.start_time DESC LIMIT 100 """, (q.strip(),)).fetchall() return [dict(r) for r in rows] return router