from __future__ import annotations from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.database import get_db from app.auth import get_current_user from app.models.courses import CoursesConfig from app.schemas.courses import CoursesConfigSchema, CoursesConfigResponse router = APIRouter( prefix="/api/courses", tags=["研学课程"], dependencies=[Depends(get_current_user)], ) def _get_or_create(db: Session) -> CoursesConfig: config = db.query(CoursesConfig).first() if not config: config = CoursesConfig(modules=[], age_groups=[], faqs=[]) db.add(config) db.commit() return config @router.get("/", response_model=CoursesConfigResponse) def get_config(db: Session = Depends(get_db)): return CoursesConfigResponse.model_validate(_get_or_create(db)) @router.put("/", response_model=CoursesConfigResponse) def update_config(req: CoursesConfigSchema, db: Session = Depends(get_db)): config = _get_or_create(db) config.modules = req.modules config.age_groups = req.age_groups config.faqs = req.faqs db.commit() db.refresh(config) return CoursesConfigResponse.model_validate(config)