from fastapi import APIRouter, Depends, HTTPException, status from pydantic import BaseModel, Field from sqlalchemy.orm import Session from app.core.deps import require_staff from app.db import get_db from app.models.home import admin_edu_platforms, save_edu_platforms router = APIRouter(dependencies=[Depends(require_staff)]) class EduPlatformWrite(BaseModel): name: str = "" url: str = "" imageFileId: int | None = None sortOrder: int = 0 class EduPlatformsWrite(BaseModel): items: list[EduPlatformWrite] = Field(default_factory=list) @router.get("/edu/platforms") def list_edu_platforms(db: Session = Depends(get_db)) -> dict: return admin_edu_platforms(db) @router.put("/edu/platforms") def write_edu_platforms(body: EduPlatformsWrite, db: Session = Depends(get_db)) -> dict: try: save_edu_platforms(db, [item.model_dump() for item in body.items]) except ValueError as exc: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)) from exc return {"ok": True}