Spaces:
Runtime error
Runtime error
| from api.router.user import user_dependency | |
| from fastapi.responses import JSONResponse | |
| from fastapi import APIRouter, Depends | |
| from db.models import Category | |
| from db.database import get_db | |
| from db.query.query_category import CategoryQuery | |
| from service.dto import CategoryCreate | |
| from script.vector_db import IndexManager | |
| from sqlalchemy.orm import Session | |
| from sqlalchemy.exc import SQLAlchemyError, IntegrityError | |
| from typing import Annotated | |
| router = APIRouter(tags=["Category"]) | |
| index_manager = IndexManager() | |
| db_dependency = Annotated[Session, Depends(get_db)] | |
| async def get_all_categories_router(user: user_dependency, db: db_dependency): | |
| if user is None or user.get("role_id") != 1: | |
| return JSONResponse(status_code=401, content="Authentication Failed") | |
| try: | |
| # Logic to retrieve all categories | |
| category_query = CategoryQuery(user) | |
| categories = category_query.get_all_categories(db) | |
| print(categories) | |
| # categories = db.query(Category).all() | |
| if not categories: | |
| return JSONResponse(status_code=404, content="No categories found") | |
| return { | |
| "message": "Categories retrieved successfully", | |
| "categories": [ | |
| {"id": cat.id, "category": cat.category} for cat in categories | |
| ], | |
| } | |
| except SQLAlchemyError as e: | |
| return JSONResponse( | |
| status_code=500, content="Database error occurred: " + str(e) | |
| ) | |
| async def get_category_by_id_router( | |
| user: user_dependency, | |
| db: db_dependency, | |
| category_id: int, | |
| ): | |
| if user is None or user.get("role_id") != 1: | |
| return JSONResponse(status_code=401, content="Authentication Failed") | |
| try: | |
| # Fetch categories based on the list of provided category_ids | |
| category_query = CategoryQuery(user) | |
| category = category_query.get_category_by_id(db, category_id) | |
| if category is None: | |
| return JSONResponse(status_code=404, content="No categories found for the given IDs") | |
| return { | |
| "message": "Categories retrieved successfully", | |
| "category": {"id": category.id, "category": category.category}, | |
| } | |
| except SQLAlchemyError as e: | |
| return JSONResponse( | |
| status_code=500, content="Database error occurred: " + str(e) | |
| ) | |
| async def create_category(user: user_dependency, db: db_dependency, category: CategoryCreate): | |
| if user is None or user.get("role_id") != 1: | |
| return JSONResponse(status_code=401, content="Authentication Failed") | |
| try: | |
| # Check if category already exists | |
| category_query = CategoryQuery(user) | |
| existing_category = category_query.get_existing_category(db, category.category_name) | |
| print(existing_category) | |
| if existing_category: # Check if the category already exists | |
| return JSONResponse(status_code=400, content={"error": "Category already exists"}) | |
| # Add category | |
| category_query.add_category(db, category.category_name) | |
| print("category added") | |
| return { | |
| "message": "Category created successfully", | |
| } | |
| except IntegrityError: | |
| db.rollback() | |
| return JSONResponse( | |
| status_code=400, | |
| content="Database integrity error: possibly a duplicate entry.", | |
| ) | |
| async def update_category( | |
| user: user_dependency, db: db_dependency, category_id: int, category: CategoryCreate | |
| ): | |
| if user is None or user.get("role_id") != 1: | |
| return JSONResponse(status_code=401, content="Authentication Failed") | |
| try: | |
| # Logic to update an existing category | |
| existing_category = ( | |
| db.query(Category).filter(Category.id == category_id).first() | |
| ) | |
| if not existing_category: | |
| return JSONResponse(status_code=404, content="Category not found") | |
| existing_category.category = category.category_name | |
| db.commit() | |
| return {"message": "Category updated successfully"} | |
| except SQLAlchemyError as e: | |
| db.rollback() | |
| return JSONResponse( | |
| status_code=500, content="Database error occurred: " + str(e) | |
| ) | |
| async def delete_category(user: user_dependency, db: db_dependency, category_id: int): | |
| if user is None or user.get("role_id") != 1: | |
| return JSONResponse(status_code=401, content="Authentication Failed") | |
| try: | |
| # Logic to delete an existing category | |
| existing_category = ( | |
| db.query(Category).filter(Category.id == category_id).first() | |
| ) | |
| if not existing_category: | |
| return JSONResponse(status_code=404, content="Category not found") | |
| db.delete(existing_category) | |
| db.commit() | |
| return {"message": "Category deleted successfully"} | |
| except SQLAlchemyError as e: | |
| db.rollback() | |
| return JSONResponse( | |
| status_code=500, content="Database error occurred: " + str(e) | |
| ) |