diff --git a/src/main/java/com/gamsa/activity/controller/ActivityController.java b/src/main/java/com/gamsa/activity/controller/ActivityController.java index 13e3fa5..7008f18 100644 --- a/src/main/java/com/gamsa/activity/controller/ActivityController.java +++ b/src/main/java/com/gamsa/activity/controller/ActivityController.java @@ -33,6 +33,7 @@ public Slice findSlice( @RequestParam(required = false) Integer sidoCode, @RequestParam(defaultValue = "false") boolean teenPossibleOnly, @RequestParam(defaultValue = "false") boolean beforeDeadlineOnly, + @RequestParam(required = false) String keyword, Pageable pageable) { ActivityFilterRequest request = ActivityFilterRequest.builder() @@ -41,6 +42,7 @@ public Slice findSlice( .sidoCode(sidoCode) .teenPossibleOnly(teenPossibleOnly) .beforeDeadlineOnly(beforeDeadlineOnly) + .keyword(keyword) .build(); return activityService.findSlice(request, pageable); diff --git a/src/main/java/com/gamsa/activity/dto/ActivityFilterRequest.java b/src/main/java/com/gamsa/activity/dto/ActivityFilterRequest.java index 9be4f9d..e719136 100644 --- a/src/main/java/com/gamsa/activity/dto/ActivityFilterRequest.java +++ b/src/main/java/com/gamsa/activity/dto/ActivityFilterRequest.java @@ -24,4 +24,7 @@ public class ActivityFilterRequest { // 마감되지 않은 활동만 private final boolean beforeDeadlineOnly; + + // 키워드 검색 + private final String keyword; } diff --git a/src/main/java/com/gamsa/activity/repository/ActivityFilterBuilder.java b/src/main/java/com/gamsa/activity/repository/ActivityFilterBuilder.java index c9b83e9..33f6bc2 100644 --- a/src/main/java/com/gamsa/activity/repository/ActivityFilterBuilder.java +++ b/src/main/java/com/gamsa/activity/repository/ActivityFilterBuilder.java @@ -17,6 +17,7 @@ public static BooleanBuilder createFilter(ActivityFilterRequest request) { eqSidoCode(filterBuilder, request.getSidoCode()); isTeenPossibleOnly(filterBuilder, request.isTeenPossibleOnly()); isDeadlineEndOnly(filterBuilder, request.isBeforeDeadlineOnly()); + containsKeyword(filterBuilder, request.getKeyword()); return filterBuilder; } @@ -50,4 +51,10 @@ public static void isDeadlineEndOnly(BooleanBuilder filterBuilder, boolean befor filterBuilder.and(activityJpaEntity.noticeEndDate.after(LocalDateTime.now())); } } + + public static void containsKeyword(BooleanBuilder filterBuilder, String keyword) { + if (keyword != null) { + filterBuilder.and(activityJpaEntity.actTitle.contains(keyword)); + } + } }