Spaces:
Sleeping
Sleeping
| """ | |
| Request Validation Utilities. | |
| This module provides validation helpers for request parameters, | |
| following FastAPI best practices. | |
| """ | |
| import uuid | |
| from pydantic import BaseModel, Field, field_validator | |
| class UUIDParam(BaseModel): | |
| """Base model for UUID path parameters with validation.""" | |
| uuid: str = Field(..., description="UUID parameter") | |
| def validate_uuid(cls, v: str) -> str: | |
| """Validate that the string is a valid UUID.""" | |
| try: | |
| uuid.UUID(v) | |
| except ValueError: | |
| raise ValueError(f"Invalid UUID format: {v}") | |
| return v | |
| def validate_uuid(v: str) -> str: | |
| """Standalone UUID validator function.""" | |
| try: | |
| uuid.UUID(v) | |
| except ValueError: | |
| raise ValueError(f"Invalid UUID format: {v}") | |
| return v | |
| class SessionIdParam(BaseModel): | |
| """Validated session ID parameter.""" | |
| session_id: str = Field(..., min_length=36, max_length=36) | |
| def validate_session_id(cls, v: str) -> str: | |
| """Validate session ID is a valid UUID.""" | |
| try: | |
| uuid.UUID(v) | |
| except ValueError: | |
| raise ValueError("Invalid session_id format - must be a valid UUID") | |
| return v | |
| class ProjectIdParam(BaseModel): | |
| """Validated project ID parameter.""" | |
| project_id: int = Field(..., gt=0) | |
| def validate_project_id(cls, v: int) -> int: | |
| """Validate project ID is positive.""" | |
| if v <= 0: | |
| raise ValueError("project_id must be a positive integer") | |
| return v | |
| # Re-export validation errors for consistent error handling | |
| __all__ = [ | |
| "UUIDParam", | |
| "SessionIdParam", | |
| "ProjectIdParam", | |
| "validate_uuid", | |
| ] | |