categories.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. # backend/app/api/categories.py
  2. from fastapi import APIRouter, Depends, HTTPException, status
  3. from sqlalchemy.orm import Session
  4. from typing import List
  5. from ..database import get_db
  6. from ..models import Category
  7. from ..schemas import CategoryCreate, CategoryUpdate, Category, ListResponse
  8. router = APIRouter(prefix="/api/categories", tags=["categories"])
  9. @router.post("/", response_model=Category)
  10. def create_category(category: CategoryCreate, db: Session = Depends(get_db)):
  11. # 检查名称是否已存在
  12. db_category = db.query(Category).filter(Category.name == category.name).first()
  13. if db_category:
  14. raise HTTPException(
  15. status_code=status.HTTP_400_BAD_REQUEST,
  16. detail="分类名称已存在"
  17. )
  18. db_category = Category(**category.dict())
  19. db.add(db_category)
  20. db.commit()
  21. db.refresh(db_category)
  22. return db_category
  23. @router.get("/", response_model=ListResponse)
  24. def get_categories(db: Session = Depends(get_db)):
  25. categories = db.query(Category).all()
  26. # 为每个分类计算脚本数量
  27. for category in categories:
  28. from ..models import Spider
  29. category.spider_count = db.query(Spider).filter(Spider.category_id == category.id).count()
  30. return ListResponse(total=len(categories), items=categories)
  31. # ... 其他分类接口(更新、删除等)