39 行
1.1 KiB
Python
39 行
1.1 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.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)
|