diff --git a/src/main/document/controller/DocumentAPIRouter.py b/src/main/document/controller/DocumentAPIRouter.py index 578f34a..60e1a70 100644 --- a/src/main/document/controller/DocumentAPIRouter.py +++ b/src/main/document/controller/DocumentAPIRouter.py @@ -3,14 +3,21 @@ from sqlalchemy.orm import Session from src.auth.dependencies import get_current_user -from src.main.document.service.document_service import save_document_service, get_document_detail +from src.main.document.service.document_service import save_document_service, get_document_detail, get_documents from src.main.document.dto.document import documentRequestDto,documentDetailDto - +from typing import List router = APIRouter( prefix="/documents", tags=["문서 업로드"] ) +@router.get("", response_model=List[documentDetailDto]) +async def getDocuments(user_id: uuid.UUID = Depends(get_current_user)): + try: + return await get_documents(str(user_id)) + except Exception as e: + raise HTTPException(status_code=500, detail=f"문서 목록 조회 중 문제 발생: {str(e)}") + @router.post("") async def uploadDocument(request: documentRequestDto, user_id: uuid.UUID = Depends(get_current_user)): try: diff --git a/src/main/document/repository/document_repository.py b/src/main/document/repository/document_repository.py index 80c3b8c..d456790 100644 --- a/src/main/document/repository/document_repository.py +++ b/src/main/document/repository/document_repository.py @@ -2,6 +2,7 @@ from src.main.document.dto.document import saveDocument, documentDetailDto from datetime import datetime from bson import ObjectId +from typing import List ##db에 문서 저장하기 def save_document(document : saveDocument) -> str: @@ -38,6 +39,35 @@ def get_document(document_id: str) -> documentDetailDto: return doc +# 사용자 ID로 문서 목록 조회하기 +def get_documents_by_user(user_id: str) -> List[documentDetailDto]: + client = get_mongo_client() + db = client['xrpedia-data'] + document_collection = db['document_collection'] + + # 사용자 ID로 문서 필터링 + documents = document_collection.find({"uploader_id": user_id}) + + result = [] + for doc in documents: + document = documentDetailDto( + document_id=str(doc["_id"]), + file_id=doc["file_id"], + document_name=doc["document_name"], + document_image_url=doc["document_image_url"], + introduction=doc["introduction"], + downloads=doc["downloads"], + pageNumber=doc["pageNumber"], + upload_date=doc["upload_date"], + uploader=doc["uploader_id"], + price=doc["price"], + category=doc["category"], + rating=doc["rating"] + ) + result.append(document) + + return result + # def get_user_name(user_id: str): # client = get_mongo_client() # db = client['xrpedia-data'] diff --git a/src/main/document/service/document_service.py b/src/main/document/service/document_service.py index ff09646..408eea2 100644 --- a/src/main/document/service/document_service.py +++ b/src/main/document/service/document_service.py @@ -2,7 +2,7 @@ #2. 이를 db에 저장한다. #3. client에게 보낸다. -from src.main.document.repository.document_repository import save_document, get_document +from src.main.document.repository.document_repository import save_document, get_document, get_documents_by_user from src.main.document.dto.document import saveDocument, documentRequestDto from datetime import datetime import asyncio @@ -33,4 +33,8 @@ async def save_document_service(request: documentRequestDto, user_id: str) : # 조회하기 async def get_document_detail(document_id: str): - return get_document(document_id) \ No newline at end of file + return get_document(document_id) + +# 사용자의 모든 문서 목록 조회 +async def get_documents(user_id: str): + return get_documents_by_user(user_id) \ No newline at end of file