DocuRAG / Api /app /modules /documentHandeler /controllers /document_handeler_controller.py
abadesalex's picture
Update to Qdrant db
47b5f0c
raw
history blame
2.46 kB
from fastapi import HTTPException, UploadFile
from fastapi.responses import JSONResponse
from app.infrastructure.repository.document_handeler_repository import (
DocumentHandelerRepository,
)
from app.modules.documentHandeler.features.createEmbeddings_feature import (
CreateEmbeddingsFeature,
)
from app.modules.documentHandeler.features.deleteDocument_feature import (
DeleteDocumentFeature,
)
from app.modules.documentHandeler.features.extractText_feature import ExtractTextFeature
from app.modules.documentHandeler.features.getAllChunkedText_feature import (
GetAllChunkedTextFeature,
)
class DocumentHandelerController:
def __init__(
self,
delete_document_feature: DeleteDocumentFeature,
create_embeddings_feature: CreateEmbeddingsFeature,
get_all_chunked_text_feature: GetAllChunkedTextFeature,
):
self.create_embeddings_feature = create_embeddings_feature
self.delete_document_feature = delete_document_feature
self.get_all_chunked_text_feature = get_all_chunked_text_feature
async def handle_file_upload(self, file: UploadFile) -> JSONResponse:
try:
text_file = await ExtractTextFeature.extract_text_from_pdf(file)
result = await self.create_embeddings_feature.create_embeddings(
text_file, file.filename
)
return JSONResponse(status_code=200, content=result.model_dump())
except Exception as e:
raise HTTPException(status_code=500, detail="Probelm on controller")
async def delete_document(self, text: str) -> JSONResponse:
try:
result = await self.delete_document_feature.delete_document_by_filename(
text
)
if result:
return JSONResponse(
status_code=200, content={"message": "Document deleted"}
)
return JSONResponse(
status_code=404, content={"message": "Document not found"}
)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
async def get_all_chunks(self) -> JSONResponse:
try:
result = await self.get_all_chunked_text_feature.get_all_chunked_text()
return JSONResponse(status_code=200, content=result.model_dump())
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))