wasserstoff / app /api /upload.py
adityasarade's picture
Adding backend files along with docker and requirements.txt
c8769a7
from fastapi import APIRouter, UploadFile, File
from typing import List
from app.services.file_handler import extract_chunks_from_file
from app.services.vector_store import save_vector_store
router = APIRouter()
@router.post("/upload/")
async def upload_files(files: List[UploadFile] = File(...)):
all_chunks = []
# Extract chunks from each file
for file in files:
try:
chunks = await extract_chunks_from_file(file)
print(f"[DEBUG] Extracted chunks from {file.filename}: {len(chunks)}")
all_chunks.extend(chunks)
except Exception as e:
print(f"[ERROR] Failed to extract chunks from {file.filename}: {e}")
if not all_chunks:
return {"error": "No valid documents were processed."}
# Store new chunks in vector DB
save_vector_store(all_chunks)
# Return only a success message; LLM runs later during search
return {
"message": f"✅ Stored {len(all_chunks)} chunks across {len({c['doc_id'] for c in all_chunks})} documents."
}