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
13 changes: 11 additions & 2 deletions src/main/document/controller/DocumentAPIRouter.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
from sqlalchemy.orm import Session

from src.auth.dependencies import get_current_user
from src.main.document.service.document_service import save_document_service
from src.main.document.dto.document import documentRequestDto
from src.main.document.service.document_service import save_document_service, get_document_detail
from src.main.document.dto.document import documentRequestDto,documentDetailDto

router = APIRouter(
prefix="/documents",
Expand All @@ -18,3 +18,12 @@ async def uploadDocument(request: documentRequestDto, user_id: uuid.UUID = Depen
return document_id
except Exception as e:
raise HTTPException(status_code=500, detail=f"문서 업로드 중 문제 발생: {str(e)}")

@router.get("/{document_id}", response_model=documentDetailDto)
async def getDocument(document_id: str):
try:
if not document_id:
raise Exception(404, detail="문서를 찾을 수 없습니다.")
return await get_document_detail(document_id)
except Exception as e:
raise HTTPException(500, detail=f"조회 실패: {str(e)}")
17 changes: 16 additions & 1 deletion src/main/document/dto/document.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,25 @@ class saveDocument(BaseModel):
uploader_id: str
price: float
category: str
rating: float # 더미

class documentRequestDto(BaseModel):
file_id: str
document_name: str
introduction: str
price: float
category: str
category: str

class documentDetailDto(BaseModel):
document_id: str
file_id: str
document_name: str
document_image_url: str
introduction: str
downloads: int
pageNumber: int
upload_date: datetime
uploader: str
price: float
category: str
rating: float
40 changes: 38 additions & 2 deletions src/main/document/repository/document_repository.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from src.config.mongodb import get_mongo_client
from src.main.document.dto.document import saveDocument
from src.main.document.dto.document import saveDocument, documentDetailDto
from datetime import datetime
from bson import ObjectId

##db에 문서 저장하기
def save_document(document : saveDocument) -> str:
Expand All @@ -9,4 +10,39 @@ def save_document(document : saveDocument) -> str:
document_collection = db['document_collection'] #db 이름 지정

document_id = document_collection.insert_one(document.model_dump()).inserted_id
return str(document_id)
return str(document_id)

# db에서 문서 조회하기
def get_document(document_id: str) -> documentDetailDto:
client = get_mongo_client()
db = client['xrpedia-data']
document_collection = db['document_collection']

get_doc = document_collection.find_one({"_id": ObjectId(document_id)})

# uploader =

doc = documentDetailDto(
document_id=str(get_doc["_id"]),
file_id=get_doc["file_id"],
document_name=get_doc["document_name"],
document_image_url= get_doc["document_image_url"],
introduction= get_doc["introduction"],
downloads= get_doc["downloads"],
pageNumber= int(get_doc["pageNumber"], 0),
upload_date= get_doc["upload_date"],
uploader= get_doc["uploader_id"], #이거 추후에 변경해야 함함
price= get_doc["price"],
category= get_doc["category"],
rating= get_doc["rating"])

return doc

# def get_user_name(user_id: str):
# client = get_mongo_client()
# db = client['xrpedia-data']
# document_collection = db['wallet']

# user = document_collection.find_one({"_id":ObjectId(user_id)})

# return user[""]
10 changes: 7 additions & 3 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
from src.main.document.repository.document_repository import save_document, get_document
from src.main.document.dto.document import saveDocument, documentRequestDto
from datetime import datetime
import asyncio
Expand All @@ -22,11 +22,15 @@ async def save_document_service(request: documentRequestDto, user_id: str) :
upload_date=upload_date,
uploader_id=user_id,
price=request.price,
category=request.category
category=request.category,
rating=4.0
)

#db에 저장하기
document_id = save_document(saved)

return document_id

return document_id
# 조회하기
async def get_document_detail(document_id: str):
return get_document(document_id)