Spaces:
Runtime error
Runtime error
| from typing import Any | |
| from fastapi import APIRouter, Depends, UploadFile, File, HTTPException | |
| import os | |
| from dependencies import get_current_user | |
| # Assuming a utility for processing PDFs and generating embeddings | |
| from utils.doc_ingest import ingest_document | |
| from utils.chat_rag import sanitize_collection_name | |
| router = APIRouter() | |
| async def upload_file(file: UploadFile = File(...), current_user: Any = Depends(get_current_user)): | |
| if file.content_type != "application/pdf": | |
| raise HTTPException(status_code=400, detail="Unsupported file type. Please upload a PDF.") | |
| upload_dir = "/home/user/data/uploads" | |
| os.makedirs(upload_dir, exist_ok=True) | |
| file_location = f"{upload_dir}/{file.filename}" | |
| with open(file_location, "wb") as buffer: | |
| contents = await file.read() | |
| buffer.write(contents) | |
| try: | |
| # Process PDF and store embeddings | |
| ingest_document(file_location, sanitize_collection_name(current_user["user_id"])) | |
| except Exception as e: | |
| # If processing fails, attempt to clean up the file before re-raising the error | |
| os.remove(file_location) | |
| raise HTTPException(status_code=500, detail=f"Failed to process file: {e}") | |
| # Clean up file in uploads directory after successful processing | |
| os.remove(file_location) | |
| return { | |
| "status": "File uploaded and processed successfully.", | |
| "user_id": current_user["user_id"], | |
| "name": current_user["name"], | |
| "role": current_user["role"] | |
| } | |