from fastapi import APIRouter, Depends, HTTPException, status, Query from sqlalchemy.orm import Session from typing import List, Optional from app.database import get_db from app.schemas.category import CategoryCreate, CategoryUpdate, CategoryResponse from app.crud import category as category_crud router = APIRouter( prefix="/categories", tags=["Categories"] ) @router.get("/", response_model=List[CategoryResponse]) def get_categories( skip: int = 0, limit: int = 100, include_inactive: bool = False, db: Session = Depends(get_db) ): return category_crud.get_categories(db, skip=skip, limit=limit, include_inactive=include_inactive) @router.get("/{category_id}", response_model=CategoryResponse) def get_category(category_id: int, db: Session = Depends(get_db)): db_category = category_crud.get_category(db, category_id=category_id) if db_category is None: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Category not found") return db_category @router.post("/", response_model=CategoryResponse, status_code=status.HTTP_201_CREATED) def create_category(category: CategoryCreate, db: Session = Depends(get_db)): return category_crud.create_category(db=db, category=category) @router.put("/{category_id}", response_model=CategoryResponse) def update_category(category_id: int, category: CategoryUpdate, db: Session = Depends(get_db)): return category_crud.update_category(db=db, category_id=category_id, category=category) @router.delete("/{category_id}") def delete_category(category_id: int, db: Session = Depends(get_db)): return category_crud.delete_category(db=db, category_id=category_id)