Skip to content

Commit c6579d4

Browse files
committed
fix
1 parent 973233b commit c6579d4

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

routes/likes.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
from fastapi import APIRouter, Depends
1+
from fastapi import APIRouter, Depends, Query
2+
from sqlalchemy import func
23
from sqlalchemy.orm import Session
34
from sqlalchemy.exc import IntegrityError
45

@@ -13,6 +14,27 @@ def _count(db: Session, slug: str) -> int:
1314
return db.query(Like).filter(Like.post_slug == slug).count()
1415

1516

17+
@router.get("/likes/bulk")
18+
def get_likes_bulk(
19+
slugs: str = Query(..., description="쉼표로 구분된 슬러그 목록"),
20+
db: Session = Depends(get_db),
21+
) -> dict[str, int]:
22+
"""여러 포스트의 좋아요 수를 한번에 조회 — { slug: count } 딕셔너리 반환"""
23+
slug_list = [s.strip() for s in slugs.split(",") if s.strip()]
24+
if not slug_list:
25+
return {}
26+
rows = (
27+
db.query(Like.post_slug, func.count(Like.id).label("cnt"))
28+
.filter(Like.post_slug.in_(slug_list))
29+
.group_by(Like.post_slug)
30+
.all()
31+
)
32+
counts: dict[str, int] = {slug: 0 for slug in slug_list}
33+
for slug, cnt in rows:
34+
counts[slug] = cnt
35+
return counts
36+
37+
1638
@router.get("/{slug:path}/likes", response_model=LikeResponse)
1739
def get_likes(slug: str, client_id: str, db: Session = Depends(get_db)):
1840
"""좋아요 수 및 현재 클라이언트의 좋아요 여부 조회"""

0 commit comments

Comments
 (0)