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
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"devon-aide.resourcePath": "c:\\Users\\user\\.vscode\\extensions\\lgcns-devon-aide.devon-aide-0.0.1\\resource"
}
208 changes: 196 additions & 12 deletions poetry.lock

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ httpx = "^0.28.1"
pymongo = "^4.11.3"
requests = "^2.32.3"
python-multipart = "^0.0.20"
sqlalchemy = "^2.0.39"

[build-system]
requires = ["poetry-core"]
Expand Down
Empty file added src/main/document/__init__.py
Empty file.
20 changes: 20 additions & 0 deletions src/main/document/controller/DocumentAPIRouter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import uuid
from fastapi import APIRouter, Depends, HTTPException
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

router = APIRouter(
prefix="/documents",
tags=["문서 업로드"]
)

@router.post("")
async def uploadDocument(request: documentRequestDto, user_id: uuid.UUID = Depends(get_current_user)):
try:
document_id = await save_document_service(request, str(user_id))
return document_id
except Exception as e:
raise HTTPException(status_code=500, detail=f"문서 업로드 중 문제 발생: {str(e)}")
Empty file.
21 changes: 21 additions & 0 deletions src/main/document/dto/document.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from pydantic import BaseModel
from datetime import datetime

class saveDocument(BaseModel):
file_id: str
document_name: str
document_image_url: str # 더미
introduction: str
downloads: int # 더미
pageNumber: int # 더미
upload_date: datetime
uploader_id: str
price: float
category: str

class documentRequestDto(BaseModel):
file_id: str
document_name: str
introduction: str
price: float
category: str
Empty file.
12 changes: 12 additions & 0 deletions src/main/document/repository/document_repository.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from src.config.mongodb import get_mongo_client
from src.main.document.dto.document import saveDocument
from datetime import datetime

##db에 문서 저장하기
def save_document(document : saveDocument) -> str:
client = get_mongo_client()
db = client['xrpedia-data']
document_collection = db['document_collection'] #db 이름 지정

document_id = document_collection.insert_one(document.model_dump()).inserted_id
return str(document_id)
32 changes: 32 additions & 0 deletions src/main/document/service/document_service.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#1. 사용자로부터 request를 받아온다.
#2. 이를 db에 저장한다.
#3. client에게 보낸다.

from src.main.document.repository.document_repository import save_document
from src.main.document.dto.document import saveDocument, documentRequestDto
from datetime import datetime
import asyncio


# 사용자로부터 request 받아서 ~~
async def save_document_service(request: documentRequestDto, user_id: str) :
upload_date = datetime.now()

saved = saveDocument(
file_id = request.file_id,
document_name = request.document_name,
document_image_url="https://image일것 같아?",
introduction=request.introduction,
downloads=32,
pageNumber=3,
upload_date=upload_date,
uploader_id=user_id,
price=request.price,
category=request.category
)

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


return document_id
4 changes: 3 additions & 1 deletion src/router.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from fastapi import APIRouter

from src.main.health.router import HealthAPIRouter
from src.main.document.controller import DocumentAPIRouter
from src.main.file.router.FileAPIRouter import router as file_router


Expand All @@ -9,4 +10,5 @@
)

router.include_router(HealthAPIRouter.router)
router.include_router(file_router)
router.include_router(file_router)
router.include_router(DocumentAPIRouter.router)