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.selector import SelectorConfig from app.schemas.selector import SelectorConfigSchema, SelectorConfigResponse router = APIRouter( prefix="/api/selector", tags=["选版工具"], dependencies=[Depends(get_current_user)], ) def _get_or_create(db: Session) -> SelectorConfig: config = db.query(SelectorConfig).first() if not config: config = SelectorConfig(questions=[], rules=[]) db.add(config) db.commit() return config @router.get("/", response_model=SelectorConfigResponse) def get_config(db: Session = Depends(get_db)): return SelectorConfigResponse.model_validate(_get_or_create(db)) @router.put("/", response_model=SelectorConfigResponse) def update_config(req: SelectorConfigSchema, db: Session = Depends(get_db)): config = _get_or_create(db) config.questions = req.questions config.rules = req.rules db.commit() db.refresh(config) return SelectorConfigResponse.model_validate(config)