| 1234567891011121314151617181920212223242526272829303132333435363738 |
- # 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)
- # ... 其他分类接口(更新、删除等)
|