from typing import Annotated from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from app.api.deps import require_admin from app.database import get_db from app.models.user import User from app.schemas.chat import ContextFileResponse, UpdateContextRequest from app.services import context_service router = APIRouter(prefix="/admin", tags=["admin"]) @router.get("/context", response_model=ContextFileResponse | None) async def get_primary_context( _admin: Annotated[User, Depends(require_admin)], db: Annotated[AsyncSession, Depends(get_db)], ): ctx = await context_service.get_primary_context(db) if not ctx: return None return ContextFileResponse.model_validate(ctx) @router.put("/context", response_model=ContextFileResponse) async def update_primary_context( data: UpdateContextRequest, admin: Annotated[User, Depends(require_admin)], db: Annotated[AsyncSession, Depends(get_db)], ): ctx = await context_service.upsert_primary_context(db, data.content, admin.id) return ContextFileResponse.model_validate(ctx)