File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1- from fastapi import APIRouter , Depends
1+ from fastapi import APIRouter , Depends , Query
2+ from sqlalchemy import func
23from sqlalchemy .orm import Session
34from 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 )
1739def get_likes (slug : str , client_id : str , db : Session = Depends (get_db )):
1840 """좋아요 수 및 현재 클라이언트의 좋아요 여부 조회"""
You can’t perform that action at this time.
0 commit comments