Spaces:
Sleeping
Sleeping
| 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)) | |