44import com .loopers .application .ranking .RankingFacade ;
55import com .loopers .application .ranking .RankingPageInfo ;
66import com .loopers .domain .ranking .RankingInfo ;
7+ import com .loopers .domain .ranking .RankingPeriod ;
78import com .loopers .interfaces .api .ApiResponse ;
89import lombok .RequiredArgsConstructor ;
910import org .springframework .web .bind .annotation .RequestMapping ;
@@ -23,17 +24,18 @@ public class RankingV1Controller implements RankingV1ApiSpec {
2324 private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter .ofPattern ("yyyyMMdd" );
2425
2526 @ Override
26- public ApiResponse <RankingV1Dto .RankingPageResponse > getRankings (String date , int page , int size ) {
27- RankingCommand command = RankingCommand .of (date , page , size );
27+ public ApiResponse <RankingV1Dto .RankingPageResponse > getRankings (String date , String period , int page , int size ) {
28+ RankingCommand command = RankingCommand .of (date , period , page , size );
2829 RankingPageInfo pageInfo = rankingFacade .getRankingPage (command );
2930 return ApiResponse .success (RankingV1Dto .RankingPageResponse .from (pageInfo ));
3031 }
3132
3233 @ Override
33- public ApiResponse <RankingV1Dto .TopNResponse > getTopN (String date , int n ) {
34+ public ApiResponse <RankingV1Dto .TopNResponse > getTopN (String date , String period , int n ) {
3435 LocalDate targetDate = parseDate (date );
35- List <RankingInfo > rankings = rankingFacade .getTopN (targetDate , n );
36- return ApiResponse .success (RankingV1Dto .TopNResponse .of (rankings , targetDate ));
36+ RankingPeriod rankingPeriod = parsePeriod (period );
37+ List <RankingInfo > rankings = rankingFacade .getTopN (targetDate , rankingPeriod , n );
38+ return ApiResponse .success (RankingV1Dto .TopNResponse .of (rankings , targetDate , rankingPeriod ));
3739 }
3840
3941 private LocalDate parseDate (String date ) {
@@ -42,4 +44,15 @@ private LocalDate parseDate(String date) {
4244 }
4345 return LocalDate .parse (date , DATE_FORMATTER );
4446 }
47+
48+ private RankingPeriod parsePeriod (String period ) {
49+ if (period == null || period .isBlank ()) {
50+ return RankingPeriod .DAILY ;
51+ }
52+ try {
53+ return RankingPeriod .valueOf (period .toUpperCase ());
54+ } catch (IllegalArgumentException e ) {
55+ return RankingPeriod .DAILY ;
56+ }
57+ }
4558}
0 commit comments