Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions src/main/document/controller/DocumentAPIRouter.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
30 changes: 30 additions & 0 deletions src/main/document/repository/document_repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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']
Expand Down
8 changes: 6 additions & 2 deletions src/main/document/service/document_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
return get_document(document_id)

# 사용자의 모든 문서 목록 조회
async def get_documents(user_id: str):
return get_documents_by_user(user_id)