diff --git a/backend/routers/fileStorage.py b/backend/routers/fileStorage.py index d56b73b1..ccda8daa 100644 --- a/backend/routers/fileStorage.py +++ b/backend/routers/fileStorage.py @@ -2,6 +2,7 @@ from fastapi import APIRouter, HTTPException, File, UploadFile, Form import requests from pydantic import BaseModel from minio import Minio +import file_Storage from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4 from reportlab.lib.utils import ImageReader @@ -12,10 +13,13 @@ from supertokens_python.recipe.session.framework.fastapi import verify_session from supertokens_python.recipe.session import SessionContainer from fastapi import Depends +import file_Storage.minioConnection + router = APIRouter() class medCertUploud(BaseModel): + app_id: str fullName: str docfname: str startDate: str @@ -25,32 +29,36 @@ class medCertUploud(BaseModel): @router.post("/minio/upload/file/", tags=["Minio"]) async def upload_File_to_user(file: UploadFile = File(...), app_id: str= Form(...)): extension = file.filename.split(".") - return { - "app_id": app_id, - "file_name": file.filename, - "file_extension": extension, - "file_size": file.size, - "content":file - } - -# Get List of all files by patient -@router.post("/files/upload/file/", tags=["Minio"]) -async def upload_File_to_user( file: UploadFile = File(...)): - extension = file.filename.split(".") - print(file.file) - print(file.filename) - print(extension) - print(file.size) - uploudFile(file.filename, extension[1], file.file, file.size) - + content = file.file #.read() + # fs = await file.read() + uploudFile(app_id, file.filename, extension[1], content) return {"message": "Successfully Uploaded File"} + # return { + # "app_id": app_id, + # "file name": file.filename, + # "extension": extension[0], + # "file contents": file.file.read(), + # } + +# # Get List of all files by patient +# @router.post("/minio/upload/file2/", tags=["Minio"]) +# async def upload_File_to_user( file: UploadFile = File(...)): +# extension = file.filename.split(".") +# # print(file.file) +# # print(file.filename) +# # print(extension[1]) +# # print(file.size) +# uploudFile(file.filename, extension[1], file.file, file.size) + +# return {"message": "Successfully Uploaded File"} # Get List of all files by patient -@router.post("/files/generate/med-cert/", tags=["Minio"]) +@router.post("/minio/generate/med-cert/", tags=["Minio"]) async def upload_File_to_user(requestItem: medCertUploud, session: SessionContainer = Depends(verify_session())): - uploudMedCert(requestItem.fullName, + uploudMedCert(requestItem.app_id, + requestItem.fullName, requestItem.docfname, requestItem.startDate, requestItem.endDate, @@ -61,39 +69,33 @@ async def upload_File_to_user(requestItem: medCertUploud, session: SessionContai -def uploudFile(fileName, extension, content, size): - client = Minio("minio:9000", - access_key="user1", - secret_key="C@rtoon1995", - secure=False - ) +def uploudFile(app_id, fileName, extension, content): + client = file_Storage.minioConnection.minioConnect() found = client.bucket_exists("mih") if not found: client.make_bucket("mih") else: print("Bucket already exists") + fname = app_id + "/" + fileName client.put_object("mih", - fileName, + fname, content, - length=size, - content_type=f"application/{extension}",) + length=-1, + part_size=10*1024*1024, + content_type=f"application/{extension}") #"minio""localhost:9000" -def uploudMedCert(fullName, docfname, startDate, endDate, returnDate): - client = Minio("minio:9000", - access_key="user1", - secret_key="C@rtoon1995", - secure=False - ) +def uploudMedCert(app_id, fullName, docfname, startDate, endDate, returnDate): + client = file_Storage.minioConnection.minioConnect() generateMedCertPDF(fullName, docfname, startDate, endDate, returnDate) found = client.bucket_exists("mih") if not found: client.make_bucket("mih") else: print("Bucket already exists") - fileName = f"Med-Cert-{fullName}-{startDate}.pdf" + fileName = f"{app_id}/Med-Cert-{fullName}-{startDate}.pdf" client.fput_object("mih", fileName, "temp.pdf") def generateMedCertPDF(fullName, docfname, startDate, endDate, returnDate): @@ -131,4 +133,11 @@ def generateMedCertPDF(fullName, docfname, startDate, endDate, returnDate): myCanvas.save() #Def get -#uploudFile("Yasien Meth","Dr D Oct","18-06-2024","20-06-2024","21-06-2024") \ No newline at end of file +#uploudFile("Yasien Meth","Dr D Oct","18-06-2024","20-06-2024","21-06-2024") + +def byteToMb(size): + sizekb = size /1000 + sizemb = sizekb / 1000 + return sizemb + +# print(byteToMb(229574)) \ No newline at end of file diff --git a/backend/routers/patients_files.py b/backend/routers/patients_files.py index 0837fb6a..992f06cc 100644 --- a/backend/routers/patients_files.py +++ b/backend/routers/patients_files.py @@ -18,7 +18,7 @@ class fileRequest(BaseModel): class fileInsertRequest(BaseModel): file_path: str file_name: str - patient_id: int + app_id: str # # Get List of all files # @router.get("/files/patients/", tags="patients_files") @@ -89,25 +89,26 @@ async def read_all_patient_files_by_app_id(app_id: str, session: SessionContaine # db.close() # return items -# # Insert Patient note into table -# @router.post("/files/insert/", tags="patients_notes", status_code=201) -# async def insertPatientFiles(itemRequest : fileInsertRequest, session: SessionContainer = Depends(verify_session())): -# today = date.today() -# db = database.dbConnection.dbConnect() -# cursor = db.cursor() -# query = "insert into patient_files " -# query += "(file_path, file_name, patient_id, insert_date) " -# query += "values (%s, %s, %s, %s)" -# notetData = (itemRequest.file_path, -# itemRequest.file_name, -# itemRequest.patient_id, -# today) -# try: -# cursor.execute(query, notetData) -# except Exception as error: -# #raise HTTPException(status_code=404, detail="Failed to Create Record") -# return {"message": error} -# db.commit() -# cursor.close() -# db.close() -# return {"message": "Successfully Created file Record"} +# Insert Patient note into table +@router.post("/files/insert/", tags=["Patients Files"], status_code=201) +async def insert_Patient_Files(itemRequest : fileInsertRequest, session: SessionContainer = Depends(verify_session())): + today = date.today() + db = database.dbConnection.dbConnect() + cursor = db.cursor() + query = "insert into patient_files " + query += "(file_path, file_name, insert_date, app_id) " + query += "values (%s, %s, %s, %s)" + notetData = (itemRequest.file_path, + itemRequest.file_name, + today, + itemRequest.app_id, + ) + try: + cursor.execute(query, notetData) + except Exception as error: + #raise HTTPException(status_code=404, detail="Failed to Create Record") + return {"message": error} + db.commit() + cursor.close() + db.close() + return {"message": "Successfully Created file Record"}