smart-line-bot / app /api /v1 /endpoints /system.py
Smiel2's picture
Initial commit
2eae977 verified
Raw
History Blame Contribute Delete
1.78 kB
"""System health and status endpoints."""
from fastapi import APIRouter
from datetime import datetime
from pydantic import BaseModel
from app.core.config import settings
router = APIRouter(tags=["system"])
class HealthResponse(BaseModel):
status: str
version: str
timestamp: datetime
class ReadyResponse(BaseModel):
status: str
database: str
redis: str
@router.get("/health", response_model=HealthResponse)
async def health_check():
"""Basic health check endpoint."""
return HealthResponse(
status="healthy",
version=settings.VERSION,
timestamp=datetime.utcnow()
)
@router.get("/ready", response_model=ReadyResponse)
async def readiness_check():
"""Readiness check - verify dependencies are available."""
db_status = "unknown"
redis_status = "unknown"
# Check database
try:
from app.core.database import engine
with engine.connect() as conn:
conn.execute("SELECT 1")
db_status = "ready"
except Exception:
db_status = "not ready"
# Check redis
try:
import redis
r = redis.from_url(settings.REDIS_URL)
r.ping()
redis_status = "ready"
except Exception:
redis_status = "not ready"
all_ready = db_status == "ready" and redis_status == "ready"
return ReadyResponse(
status="ready" if all_ready else "not ready",
database=db_status,
redis=redis_status
)
@router.get("/info")
async def system_info():
"""Get system information."""
return {
"project_name": settings.PROJECT_NAME,
"version": settings.VERSION,
"environment": settings.ENVIRONMENT,
"debug": settings.DEBUG,
"api_v1_str": settings.API_V1_STR,
}