40 行
1.2 KiB
Python
40 行
1.2 KiB
Python
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)
|