- Gerbil.NameSearch (lowercase, strip whitespace/.-_) auto-synced in ApplicationContext
.SaveChanges; Gridify-filterable so 'clan kleine chaoten' matches 'Clan-Kleine-Chaoten'
(client strips separators the same way). GerbilSearch.Normalize shared helper.
- Gerbil.OriginBreeder (free-text Herkunft) on DTO+Input, set by the FEAT-8 import from the
source Zucht (imported animals have no OriginContact). Gridify-filterable.
- GET /gerbils/breeders: distinct non-empty OriginBreeder values for the Herkunft dropdown.
- Migration AddSearchFields (+ NameSearch backfill SQL for existing rows).
- GridifyParams wrapper: nullable page/pageSize/filter/orderBy so list endpoints
work with no query params (Gridify's non-nullable int Page made [AsParameters]
treat them as required -> 400). Defaults page=1,pageSize=20.
- Normalize incoming filter '==' -> '=' : the frontend gridify.ts emits '==' for
equals (its convention) but Gridify's equals is '='. Safe (values are escaped;
!= >= <= =* contain no '=='). Fixes status==Active (frontend default that 500'd).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>