diff --git a/app/api/friend.py b/app/api/friend.py index 9a4adef..47b1f27 100644 --- a/app/api/friend.py +++ b/app/api/friend.py @@ -8,7 +8,7 @@ from app.schemas.friend import ( FriendListItem, ) from app.schemas.character import CharacterResponse -from app.schemas.homework import HomeworkTypeResponse +from app.schemas.dashboard import DashboardHomework from app.services import friend_service from app.models.user import User @@ -77,7 +77,10 @@ def get_friend_characters( return friend_service.get_public_characters_of_friend(db, current_user.id, friend_id) -@router.get("/{friend_id}/characters/{character_id}/homeworks", response_model=list[HomeworkTypeResponse]) +@router.get( + "/{friend_id}/characters/{character_id}/homeworks", + response_model=list[DashboardHomework], +) def get_friend_character_homeworks( friend_id: int, character_id: int, diff --git a/app/services/friend_service.py b/app/services/friend_service.py index e529c01..52155f6 100644 --- a/app/services/friend_service.py +++ b/app/services/friend_service.py @@ -188,13 +188,34 @@ def get_public_homeworks_of_friend_character( if not character: raise HTTPException(status_code=404, detail="공개된 캐릭터를 찾을 수 없습니다.") - # 3. 공개된 숙제만 조회 - results = db.query(HomeworkType).join(CharacterHomework).filter( - CharacterHomework.character_id == character_id, - HomeworkType.is_public == True - ).all() + # 3. 공개된 숙제만 조회하며 완료 횟수도 포함 + rows = ( + db.query( + HomeworkType.id.label("homework_id"), + HomeworkType.title, + HomeworkType.reset_type, + HomeworkType.clear_count, + CharacterHomework.complete_cnt, + ) + .join(CharacterHomework, CharacterHomework.homework_type_id == HomeworkType.id) + .filter( + CharacterHomework.character_id == character_id, + HomeworkType.is_public == True, + ) + .order_by(HomeworkType.order.asc()) + .all() + ) - return results + return [ + { + "homework_id": row[0], + "title": row[1], + "reset_type": row[2], + "clear_count": row[3], + "complete_cnt": row[4], + } + for row in rows + ] def delete_friend(db: Session, user_id: int, friend_id: int): user_ids = sorted([user_id, friend_id])