58a9728d5e
- Create schemas/ directory with 12 schema files covering all domains
- Extract 70+ Pydantic models from 11 router files
- Routers now import from src.schemas.{domain} instead of defining inline
- Zero inline BaseModel definitions remain in any router
Quality gates: py_compile all schemas (pass), py_compile all routers (pass)
Refs: repo-restructure Task 3.2
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
"""Health check response schemas."""
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class DatabaseHealth(BaseModel):
|
|
"""Database health check result."""
|
|
|
|
status: str = Field(description="Database health status", examples=["healthy"])
|
|
response_time_ms: float = Field(
|
|
description="Query response time in milliseconds", examples=[5.2]
|
|
)
|
|
|
|
|
|
class DiskHealth(BaseModel):
|
|
"""Disk space health check result."""
|
|
|
|
status: str = Field(description="Disk health status", examples=["healthy"])
|
|
free_gb: float = Field(description="Free disk space in GB", examples=[45.2])
|
|
total_gb: float = Field(description="Total disk space in GB", examples=[100.0])
|
|
|
|
|
|
class HealthChecks(BaseModel):
|
|
"""Individual health checks."""
|
|
|
|
database: DatabaseHealth | None = None
|
|
disk: DiskHealth | None = None
|
|
|
|
|
|
class HealthResponse(BaseModel):
|
|
"""Overall health check response."""
|
|
|
|
status: str = Field(description="Overall health status", examples=["healthy"])
|
|
timestamp: str = Field(
|
|
description="ISO 8601 timestamp", examples=["2026-05-19T12:00:00Z"]
|
|
)
|
|
version: str = Field(description="API version", examples=["0.1.0"])
|
|
checks: HealthChecks = Field(description="Individual health checks")
|
|
uptime_seconds: float = Field(
|
|
description="Server uptime in seconds", examples=[3600.0]
|
|
)
|
|
|
|
|
|
class DatabaseHealthResponse(BaseModel):
|
|
"""Database-specific health check response."""
|
|
|
|
status: str = Field(description="Database health status", examples=["healthy"])
|
|
response_time_ms: float = Field(
|
|
description="Query response time in milliseconds", examples=[5.2]
|
|
)
|