|
1 | 1 | from bson import ObjectId
|
2 |
| -from fastapi import HTTPException |
| 2 | +from fastapi import HTTPException, status |
3 | 3 | from pymongo.database import Database
|
4 | 4 |
|
5 |
| -async def add_book_to_user(db: Database, username: str, book_name: str): |
| 5 | +async def add_book_to_user(book_db: Database, user_db: Database, username: str, book_id: str): |
6 | 6 | """
|
7 |
| - 주어진 username에 해당하는 사용자의 books 필드에, |
| 7 | + 주어진 username에 해당하는 사용자의 book 필드에, |
8 | 8 | books 컬렉션에서 book_name에 해당하는 책의 _id를 추가합니다.
|
9 | 9 | """
|
10 | 10 | # books 컬렉션에서 book_name에 해당하는 책을 조회합니다.
|
11 |
| - book = await db["books"].find_one({"book_name": book_name}) |
| 11 | + book = await book_db["books"].find_one({"_id": book_id}) |
12 | 12 | if not book:
|
13 | 13 | raise HTTPException(status_code=404, detail="Book not found")
|
14 | 14 |
|
15 |
| - # 책의 _id를 가져옵니다. |
16 |
| - book_id = book["_id"] |
17 |
| - |
18 |
| - # 사용자의 문서에서 books 필드에 책의 _id를 추가합니다. |
| 15 | + # 사용자의 문서에서 book 필드에 책의 _id를 추가합니다. |
19 | 16 | # $addToSet은 이미 존재하는 값은 추가하지 않습니다.
|
20 |
| - result = await db["users"].update_one( |
| 17 | + result = await user_db["users"].update_one( |
21 | 18 | {"name": username},
|
22 | 19 | {"$addToSet": {"book": book_id}}
|
23 | 20 | )
|
24 |
| - |
25 |
| - # result.modified_count가 0이면 이미 추가되었거나 사용자가 존재하지 않을 수 있음. |
26 |
| - return book_id |
| 21 | + if result.modified_count == 0: |
| 22 | + raise HTTPException( |
| 23 | + status_code=status.HTTP_400_BAD_REQUEST, |
| 24 | + detail="사용자 상태 업데이트에 실패하였습니다." |
| 25 | + ) |
| 26 | + return result |
27 | 27 |
|
28 | 28 | async def get_book_info(db: Database, book_id: str):
|
29 | 29 | """
|
|
0 commit comments