diff --git a/src/core/crud.py b/src/core/crud.py index f4d9b00..b5a8fbc 100644 --- a/src/core/crud.py +++ b/src/core/crud.py @@ -18,8 +18,11 @@ async def get_by_column_value(collection: str, column_name: str, value: Any) -> return result # READ: 조건으로 데이터 가져오기 (페이징 지원) -async def get_many(collection: str, filter: dict, skip: int = 0, limit: int = 10) -> List[dict]: - results = await db[collection].find(filter).skip(skip).limit(limit).to_list(length=limit) +async def get_many(collection: str, filter: dict, skip: int = 0, limit: int = 10, sort_by: Optional[str] = None, sort_direction: int = 1) -> List[dict]: + query = db[collection].find(filter).skip(skip).limit(limit) + if sort_by: + query = query.sort(sort_by, sort_direction) + results = await query.to_list(length=limit) return results # UPDATE: 특정 ID의 데이터 수정 diff --git a/src/domain/song/services.py b/src/domain/song/services.py index daa716e..a079682 100644 --- a/src/domain/song/services.py +++ b/src/domain/song/services.py @@ -7,15 +7,17 @@ # 전체 노래 목록 가져오기 async def get_all_songs(skip: int, limit: int) -> List[dict]: filter_query = {} - sort_criteria = [("title", 1)] - songs = await get_many("song", filter_query, skip, limit, sort=sort_criteria) + sort_by = "title" + sort_direction = 1 + songs = await get_many("song", filter_query, skip, limit, sort_by, sort_direction) return normalize_lyrics(songs) # 카테고리별 노래 목록 가져오기 async def get_songs_by_category(category: Optional[str], skip: int, limit: int) -> List[dict]: filter_query = {"category": category} if category else {} - ort_criteria = [("title", 1)] - songs = await get_many("song", filter_query, skip, limit, sort=sort_criteria) + sort_by = "title" + sort_direction = 1 + songs = await get_many("song", filter_query, skip, limit, sort_by, sort_direction) return normalize_lyrics(songs) # 태그별 노래 목록 가져오기