Skip to content

Commit cf534f5

Browse files
authored
Merge pull request #45 from 9git9git/BE-기능-수정
✨ 캐릭터 도감의 isCollected를 구분하기 위한 기능추가
2 parents 4bf42b5 + 97644e0 commit cf534f5

2 files changed

Lines changed: 25 additions & 1 deletion

File tree

app/api/v1/endpoints/character.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
delete_character_by_id,
99
update_character_by_id,
1010
get_character_collection,
11+
register_user_character,
1112
)
1213
from sqlalchemy.ext.asyncio import AsyncSession
1314
from app.db.session import get_db
@@ -33,7 +34,7 @@ async def post_character(
3334
)
3435

3536

36-
@router.get("/", response_model=ResponseBase[List[CharacterResponse]])
37+
@router.get("/all", response_model=ResponseBase[List[CharacterResponse]])
3738
async def get_characters(
3839
db: AsyncSession = Depends(get_db),
3940
) -> ResponseBase[List[CharacterResponse]]:
@@ -98,6 +99,14 @@ async def delete_character(
9899

99100

100101
# 서비스 로직
102+
@router.post("/collect")
103+
async def collect_character_for_user(
104+
user_id: UUID,
105+
character_id: UUID,
106+
db: AsyncSession = Depends(get_db),
107+
):
108+
await register_user_character(db, user_id, character_id)
109+
return {"message": "수집 완료!"}
101110

102111

103112
@router.get("/", response_model=ResponseBase[List[CharacterResponse]])

app/services/character.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
from sqlalchemy.orm import selectinload
1616
from app.models.user import UserCharacter
1717
from app.models.user import Character as CharacterModel
18+
from uuid import uuid4
19+
from datetime import datetime
1820

1921

2022
async def add_character(
@@ -81,6 +83,19 @@ async def delete_character_by_id(db: AsyncSession, character_id: UUID) -> bool:
8183
# 서비스 로직
8284

8385

86+
async def register_user_character(
87+
db: AsyncSession, user_id: UUID, character_id: UUID
88+
) -> None:
89+
user_character = UserCharacter(
90+
id=uuid4(),
91+
user_id=user_id,
92+
character_id=character_id,
93+
collected_at=datetime.utcnow(),
94+
)
95+
db.add(user_character)
96+
await db.commit()
97+
98+
8499
async def get_character_collection(
85100
db: AsyncSession, user_id: UUID
86101
) -> List[CharacterResponse]:

0 commit comments

Comments
 (0)