Add animal_id filter support for registry selection
The registry selection feature builds filters like animal_id:X|Y|Z but the parser didn't recognize animal_id as a valid field. - Add animal_id to VALID_FIELDS in parser.py - Add animal_id handler in resolver.py _build_filter_clause 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,7 @@ from animaltrack.selection.ast import FieldFilter, FilterAST
|
||||
|
||||
# Supported filter fields
|
||||
VALID_FIELDS = frozenset(
|
||||
{"location", "species", "sex", "life_stage", "identified", "tag", "status"}
|
||||
{"animal_id", "location", "species", "sex", "life_stage", "identified", "tag", "status"}
|
||||
)
|
||||
|
||||
# Fields that can be used as flags (without :value)
|
||||
|
||||
@@ -148,7 +148,16 @@ def _build_filter_clause(field_filter: FieldFilter, ts_utc: int) -> tuple[str, l
|
||||
field = field_filter.field
|
||||
values = list(field_filter.values)
|
||||
|
||||
if field == "species":
|
||||
if field == "animal_id":
|
||||
# Direct animal ID filter
|
||||
placeholders = ",".join("?" * len(values))
|
||||
query = f"""
|
||||
SELECT animal_id FROM animal_registry
|
||||
WHERE animal_id IN ({placeholders})
|
||||
"""
|
||||
return query, values
|
||||
|
||||
elif field == "species":
|
||||
# Species from animal_registry (current state)
|
||||
placeholders = ",".join("?" * len(values))
|
||||
query = f"""
|
||||
|
||||
Reference in New Issue
Block a user