category_service.py 1016 B

1234567891011121314151617181920212223242526
  1. # backend/app/services/category_service.py
  2. from sqlalchemy.orm import Session
  3. from fastapi import HTTPException, status
  4. from ..models import Category, Spider
  5. class CategoryService:
  6. @staticmethod
  7. def get_category_by_id(db: Session, category_id: int) -> Category:
  8. category = db.query(Category).filter(Category.id == category_id).first()
  9. if not category:
  10. raise HTTPException(
  11. status_code=status.HTTP_404_NOT_FOUND,
  12. detail="分类不存在"
  13. )
  14. return category
  15. @staticmethod
  16. def check_category_name_exists(db: Session, name: str, exclude_id: int = None) -> bool:
  17. query = db.query(Category).filter(Category.name == name)
  18. if exclude_id:
  19. query = query.filter(Category.id != exclude_id)
  20. return query.first() is not None
  21. @staticmethod
  22. def get_spider_count(db: Session, category_id: int) -> int:
  23. return db.query(Spider).filter(Spider.category_id == category_id).count()