multi-agent-system / app /utils /validation.py
firepenguindisopanda
updated with new prompts and new workflow to generate a document
94f31ec
Raw
History Blame Contribute Delete
1.83 kB
"""
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")
@field_validator("uuid")
@classmethod
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)
@field_validator("session_id")
@classmethod
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)
@field_validator("project_id")
@classmethod
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",
]