# backend/app/api/categories.py from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from typing import List from ..database import get_db from ..models import Category from ..schemas import CategoryCreate, CategoryUpdate, Category, ListResponse router = APIRouter(prefix="/api/categories", tags=["categories"]) @router.post("/", response_model=Category) def create_category(category: CategoryCreate, db: Session = Depends(get_db)): # 检查名称是否已存在 db_category = db.query(Category).filter(Category.name == category.name).first() if db_category: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="分类名称已存在" ) db_category = Category(**category.dict()) db.add(db_category) db.commit() db.refresh(db_category) return db_category @router.get("/", response_model=ListResponse) def get_categories(db: Session = Depends(get_db)): categories = db.query(Category).all() # 为每个分类计算脚本数量 for category in categories: from ..models import Spider category.spider_count = db.query(Spider).filter(Spider.category_id == category.id).count() return ListResponse(total=len(categories), items=categories) # ... 其他分类接口(更新、删除等)