Skip to content

Commit 6d5c888

Browse files
committed
[FIX] 토론 좋아요 수 반영
1 parent ce2712f commit 6d5c888

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

crud/discussion.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from sqlalchemy.orm import Session
2-
from models.discussion import Discussion
2+
from models.discussion import Discussion, DiscussionLike
33
from schemas.discussion import DiscussionCreate, DiscussionLikeResponse
44
from typing import List
55

@@ -19,20 +19,32 @@ def get_discussions_by_question(db: Session, question_id: int):
1919

2020
# 토론 좋아요 추가
2121
def add_like_to_discussion(db: Session, discussion_id: int, user_id: int):
22-
discussion = discussion = db.query(Discussion).filter(Discussion.discussion_id == discussion_id).first()
23-
# 좋아요 토글: 좋아요가 1 이상이면 취소, 0이면 추가
24-
if discussion.like > 0:
25-
discussion.like -= 1 # 좋아요 취소
22+
discussion = db.query(Discussion).filter(Discussion.discussion_id == discussion_id).first()
23+
24+
# 사용자가 이미 좋아요를 눌렀는지 확인
25+
existing_like = db.query(DiscussionLike).filter(
26+
DiscussionLike.discussion_id == discussion_id,
27+
DiscussionLike.user_id == user_id
28+
).first()
29+
30+
if existing_like:
31+
# 이미 눌렀다면 삭제 (좋아요 취소)
32+
db.delete(existing_like)
33+
discussion.like -= 1
2634
liked = False
2735
else:
28-
discussion.like += 1 # 좋아요 추가
36+
# 좋아요 추가
37+
new_like = DiscussionLike(discussion_id=discussion_id, user_id=user_id)
38+
db.add(new_like)
39+
discussion.like += 1
2940
liked = True
3041

3142
db.commit()
3243
db.refresh(discussion)
3344

34-
return {"discussion_id": discussion_id, "like": discussion.like, "liked": liked}
45+
return {"discussion_id": discussion_id, "like": discussion.like, "liked": liked}
3546

3647
# 좋아요 누른 토론 조회
3748
def get_liked_discussions_by_user(db: Session, user_id: int) -> List[Discussion]:
38-
return db.query(Discussion).filter(Discussion.user_id == user_id, Discussion.like > 0).all()
49+
return db.query(Discussion).join(DiscussionLike, Discussion.discussion_id == DiscussionLike.discussion_id)\
50+
.filter(DiscussionLike.user_id == user_id).all()

models/discussion.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,10 @@ class Discussion(Base):
1313
comment_exist = Column(Boolean, default=False, nullable=False)
1414
created_date = Column(DateTime, server_default=func.now(), nullable=False)
1515
updated_date = Column(DateTime, onupdate=func.now(), nullable=True)
16+
17+
class DiscussionLike(Base):
18+
__tablename__ = "discussion_likes"
19+
20+
discussion_likes_id = Column(BigInteger, primary_key=True, autoincrement=True)
21+
discussion_id = Column(BigInteger, ForeignKey("discussions.discussion_id"), nullable=False)
22+
user_id = Column(BigInteger, ForeignKey("users.user_id"), nullable=False)

0 commit comments

Comments
 (0)