Add global search and filtering enhancements

- Add GET /api/v1/search endpoint for cross-entity search
- Add visibility filter to projects list API
- Enhance tag search to include artifact original filename
- Fix project list sorting to use sort/order parameters
- Add GlobalSearch component with keyboard navigation and "/" shortcut
- Add FilterDropdown component for reusable filter dropdowns
- Add visibility filter UI to Home page with URL persistence
- Update API types and functions for global search
This commit is contained in:
Mondo Diaz
2025-12-12 11:33:52 -06:00
parent 7d80bef39a
commit fe5cda20c5
11 changed files with 910 additions and 10 deletions

View File

@@ -269,6 +269,51 @@ class ConsumerResponse(BaseModel):
from_attributes = True
# Global search schemas
class SearchResultProject(BaseModel):
"""Project result for global search"""
id: UUID
name: str
description: Optional[str]
is_public: bool
class Config:
from_attributes = True
class SearchResultPackage(BaseModel):
"""Package result for global search"""
id: UUID
project_id: UUID
project_name: str
name: str
description: Optional[str]
format: str
class Config:
from_attributes = True
class SearchResultArtifact(BaseModel):
"""Artifact/tag result for global search"""
tag_id: UUID
tag_name: str
artifact_id: str
package_id: UUID
package_name: str
project_name: str
original_name: Optional[str]
class GlobalSearchResponse(BaseModel):
"""Combined search results across all entity types"""
query: str
projects: List[SearchResultProject]
packages: List[SearchResultPackage]
artifacts: List[SearchResultArtifact]
counts: Dict[str, int] # Total counts for each type
# Health check
class HealthResponse(BaseModel):
status: str