mirror of
https://github.com/Donkie/Spoolman.git
synced 2026-10-22 10:02:17 -05:00
Searching a filament name only ever returned the filament: a spool matches on its own text (comment, location, lot number, extra fields) or its exact id, so a name that lives on the filament could not reach any of its spools. The hit named the filament you own and then dead-ended. Each filament result now carries its first few spools as pills, with an overflow link to the filament for the rest. GET /search gains an opt-in spools_per_filament parameter; at 0, the default, the response is byte for byte what it was, so nothing else that reads the endpoint changes. The spools are fetched in one query over the matched filaments and grouped in Python rather than with a per-group window function, which keeps the behaviour identical on all four supported databases, and yields the exact total count for free. They obey allow_archived like the rest of the response, and are ordered by id so "first" means the same thing everywhere. Fixes #993