diff --git a/src/main/java/leets/weeth/domain/board/application/dto/PostDTO.java b/src/main/java/leets/weeth/domain/board/application/dto/PostDTO.java index aa27c830..ced6270e 100644 --- a/src/main/java/leets/weeth/domain/board/application/dto/PostDTO.java +++ b/src/main/java/leets/weeth/domain/board/application/dto/PostDTO.java @@ -79,6 +79,7 @@ public record Response( public record ResponseAll( Long id, String name, + Part part, Position position, Role role, String title, diff --git a/src/main/java/leets/weeth/domain/board/application/usecase/NoticeUsecase.java b/src/main/java/leets/weeth/domain/board/application/usecase/NoticeUsecase.java index 104292a2..00f20557 100644 --- a/src/main/java/leets/weeth/domain/board/application/usecase/NoticeUsecase.java +++ b/src/main/java/leets/weeth/domain/board/application/usecase/NoticeUsecase.java @@ -17,4 +17,5 @@ public interface NoticeUsecase { void delete(Long noticeId, Long userId) throws UserNotMatchException; + Slice searchNotice(String keyword, int pageNumber, int pageSize); } diff --git a/src/main/java/leets/weeth/domain/board/application/usecase/NoticeUsecaseImpl.java b/src/main/java/leets/weeth/domain/board/application/usecase/NoticeUsecaseImpl.java index 1de01a88..a04c3bc8 100644 --- a/src/main/java/leets/weeth/domain/board/application/usecase/NoticeUsecaseImpl.java +++ b/src/main/java/leets/weeth/domain/board/application/usecase/NoticeUsecaseImpl.java @@ -1,6 +1,11 @@ package leets.weeth.domain.board.application.usecase; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import leets.weeth.domain.board.application.dto.NoticeDTO; +import leets.weeth.domain.board.application.exception.NoSearchResultException; import leets.weeth.domain.board.application.exception.PageNotFoundException; import leets.weeth.domain.board.application.mapper.NoticeMapper; import leets.weeth.domain.board.domain.entity.Notice; @@ -28,11 +33,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - @Service @RequiredArgsConstructor public class NoticeUsecaseImpl implements NoticeUsecase { @@ -85,6 +85,22 @@ public Slice findNotices(int pageNumber, int pageSize) { return notices.map(notice->mapper.toAll(notice, checkFileExistsByNotice(notice.id))); } + @Override + public Slice searchNotice(String keyword, int pageNumber, int pageSize) { + validatePageNumber(pageNumber); + + keyword = keyword.strip(); + + Pageable pageable = PageRequest.of(pageNumber, pageSize, Sort.by(Sort.Direction.DESC, "id")); + Slice notices = noticeFindService.search(keyword, pageable); + + if (notices.isEmpty()){ + throw new NoSearchResultException(); + } + + return notices.map(notice -> mapper.toAll(notice, checkFileExistsByNotice(notice.id))); + } + @Override @Transactional public void update(Long noticeId, NoticeDTO.Update dto, Long userId) { @@ -150,4 +166,9 @@ private CommentDTO.Response mapToDtoWithChildren(Comment comment, Map findPartPosts(PartPostDTO dto, int pageNumber, } @Override - public Slice findEducationPosts(Long userId, Integer cardinalNumber, int pageNumber, int pageSize) { + public Slice findEducationPosts(Long userId, Part part, Integer cardinalNumber, int pageNumber, int pageSize) { User user = userGetService.find(userId); + Pageable pageable = PageRequest.of(pageNumber, pageSize, Sort.by(Sort.Direction.DESC, "id")); if (user.hasRole(Role.ADMIN)) { - return postFindService.findByCategory(Category.Education, pageNumber, pageSize) + return postFindService.findByCategory(part, Category.Education, pageNumber, pageSize) .map(post -> mapper.toEducationAll(post, checkFileExistsByPost(post.getId()))); } - Pageable pageable = PageRequest.of(pageNumber, pageSize, Sort.by(Sort.Direction.DESC, "id")); - if (cardinalNumber != null) { if (userCardinalGetService.notContains(user, cardinalGetService.findByUserSide(cardinalNumber))) { return new SliceImpl<>(Collections.emptyList(), pageable, false); } - Slice posts = postFindService.findEducationByCardinal(cardinalNumber, pageable); + Slice posts = postFindService.findEducationByCardinal(part, cardinalNumber, pageable); return posts.map(post -> mapper.toEducationAll(post, checkFileExistsByPost(post.getId()))); } @@ -148,7 +147,7 @@ public Slice findEducationPosts(Long userId, Integ if (userCardinals.isEmpty()) { return new SliceImpl<>(Collections.emptyList(), pageable, false); } - Slice posts = postFindService.findEducationByCardinals(userCardinals, pageable); + Slice posts = postFindService.findEducationByCardinals(part, userCardinals, pageable); return posts.map(post -> mapper.toEducationAll(post, checkFileExistsByPost(post.getId()))); } @@ -176,6 +175,22 @@ public Slice searchPost(String keyword, int pageNumber, int return posts.map(post->mapper.toAll(post, checkFileExistsByPost(post.id))); } + @Override + public Slice searchEducation(String keyword, int pageNumber, int pageSize) { + validatePageNumber(pageNumber); + + keyword = keyword.strip(); + + Pageable pageable = PageRequest.of(pageNumber, pageSize, Sort.by(Sort.Direction.DESC, "id")); + Slice posts = postFindService.searchEducation(keyword, pageable); + + if(posts.isEmpty()){ + throw new NoSearchResultException(); + } + + return posts.map(post->mapper.toEducationAll(post, checkFileExistsByPost(post.id))); + } + @Override @Transactional public void update(Long postId, PostDTO.Update dto, Long userId) { diff --git a/src/main/java/leets/weeth/domain/board/application/usecase/PostUsecase.java b/src/main/java/leets/weeth/domain/board/application/usecase/PostUsecase.java index fbf3ced6..c2acb2e4 100644 --- a/src/main/java/leets/weeth/domain/board/application/usecase/PostUsecase.java +++ b/src/main/java/leets/weeth/domain/board/application/usecase/PostUsecase.java @@ -19,7 +19,7 @@ public interface PostUsecase { Slice findPartPosts(PartPostDTO dto, int pageNumber, int pageSize); - Slice findEducationPosts(Long userId, Integer cardinalNumber, int pageNumber, int pageSize); + Slice findEducationPosts(Long userId, Part part, Integer cardinalNumber, int pageNumber, int pageSize); PostDTO.ResponseStudyNames findStudyNames(Part part); @@ -30,4 +30,6 @@ public interface PostUsecase { void delete(Long postId, Long userId) throws UserNotMatchException; Slice searchPost(String keyword, int pageNumber, int pageSize); + + Slice searchEducation(String keyword, int pageNumber, int pageSize); } diff --git a/src/main/java/leets/weeth/domain/board/domain/repository/NoticeRepository.java b/src/main/java/leets/weeth/domain/board/domain/repository/NoticeRepository.java index 1e97e88f..1ab4117a 100644 --- a/src/main/java/leets/weeth/domain/board/domain/repository/NoticeRepository.java +++ b/src/main/java/leets/weeth/domain/board/domain/repository/NoticeRepository.java @@ -4,10 +4,19 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Slice; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; public interface NoticeRepository extends JpaRepository { Slice findPageBy(Pageable page); + @Query(""" + SELECT n FROM Notice n + WHERE (LOWER(n.title) LIKE LOWER(CONCAT('%', :kw, '%')) + OR LOWER(n.content) LIKE LOWER(CONCAT('%', :kw, '%'))) + ORDER BY n.id DESC + """) + Slice search(@Param("kw") String kw, Pageable pageable); } diff --git a/src/main/java/leets/weeth/domain/board/domain/repository/PostRepository.java b/src/main/java/leets/weeth/domain/board/domain/repository/PostRepository.java index 2fe86f81..3070876d 100644 --- a/src/main/java/leets/weeth/domain/board/domain/repository/PostRepository.java +++ b/src/main/java/leets/weeth/domain/board/domain/repository/PostRepository.java @@ -14,7 +14,47 @@ public interface PostRepository extends JpaRepository { - Slice findPageBy(Pageable page); + @Query(""" + SELECT p FROM Post p + WHERE p.category IN ( + leets.weeth.domain.board.domain.entity.enums.Category.StudyLog, + leets.weeth.domain.board.domain.entity.enums.Category.Article + ) + ORDER BY p.id DESC + """) + Slice findRecentPart(Pageable pageable); + + @Query(""" + SELECT p FROM Post p + WHERE p.category = leets.weeth.domain.board.domain.entity.enums.Category.Education + ORDER BY p.id DESC + """) + Slice findRecentEducation(Pageable pageable); + + @Query(""" + SELECT p FROM Post p + WHERE p.category IN ( + leets.weeth.domain.board.domain.entity.enums.Category.StudyLog, + leets.weeth.domain.board.domain.entity.enums.Category.Article + ) + AND ( + LOWER(p.title) LIKE LOWER(CONCAT('%', :kw, '%')) + OR LOWER(p.content) LIKE LOWER(CONCAT('%', :kw, '%')) + ) + ORDER BY p.id DESC + """) + Slice searchPart(@Param("kw") String kw, Pageable pageable); + + @Query(""" + SELECT p FROM Post p + WHERE p.category = leets.weeth.domain.board.domain.entity.enums.Category.Education + AND ( + LOWER(p.title) LIKE LOWER(CONCAT('%', :kw, '%')) + OR LOWER(p.content) LIKE LOWER(CONCAT('%', :kw, '%')) + ) + ORDER BY p.id DESC + """) + Slice searchEducation(@Param("kw") String kw, Pageable pageable); @Query(""" SELECT DISTINCT p.studyName @@ -38,18 +78,44 @@ public interface PostRepository extends JpaRepository { """) Slice findByPartAndOptionalFilters(@Param("part") Part part, @Param("category") Category category, @Param("cardinal") Integer cardinal, @Param("studyName") String studyName, @Param("week") Integer week, Pageable pageable); - Slice findByCategoryAndCardinalNumber(Category category, Integer cardinalNumber, Pageable pageable); - @Query(""" SELECT p FROM Post p WHERE p.category = :category - AND p.cardinalNumber IN :cardinals + AND ( + :partName = 'ALL' + OR FUNCTION('FIND_IN_SET', :partName, p.parts) > 0 + OR FUNCTION('FIND_IN_SET', 'ALL', p.parts) > 0 + ) ORDER BY p.id DESC """) - Slice findByCategoryAndCardinalIn(@Param("category") Category category, @Param("cardinals") Collection cardinals, Pageable pageable); + Slice findByCategoryWithPart(@Param("partName") String partName, @Param("category") Category category, Pageable pageable); - Slice findByCategory(Category category, Pageable pageable); + @Query(""" + SELECT p + FROM Post p + WHERE p.category = :category + AND p.cardinalNumber = :cardinal + AND ( + :partName = 'ALL' + OR FUNCTION('FIND_IN_SET', :partName, p.parts) > 0 + OR FUNCTION('FIND_IN_SET', 'ALL', p.parts) > 0 + ) + ORDER BY p.id DESC + """) + Slice findByCategoryAndCardinalNumberWithPart(@Param("partName") String partName, @Param("category") Category category, @Param("cardinal") Integer cardinal, Pageable pageable); - Slice findByTitleContainingOrContentContainingIgnoreCase(String keyword1, String keyword2, Pageable pageable); + @Query(""" + SELECT p + FROM Post p + WHERE p.category = :category + AND p.cardinalNumber IN :cardinals + AND ( + :partName = 'ALL' + OR FUNCTION('FIND_IN_SET', :partName, p.parts) > 0 + OR FUNCTION('FIND_IN_SET', 'ALL', p.parts) > 0 + ) + ORDER BY p.id DESC + """) + Slice findByCategoryAndCardinalInWithPart(@Param("partName") String partName, @Param("category") Category category, @Param("cardinals") Collection cardinals, Pageable pageable); } diff --git a/src/main/java/leets/weeth/domain/board/domain/service/NoticeFindService.java b/src/main/java/leets/weeth/domain/board/domain/service/NoticeFindService.java index fa2efa58..0640ec81 100644 --- a/src/main/java/leets/weeth/domain/board/domain/service/NoticeFindService.java +++ b/src/main/java/leets/weeth/domain/board/domain/service/NoticeFindService.java @@ -1,15 +1,14 @@ package leets.weeth.domain.board.domain.service; +import java.util.List; +import leets.weeth.domain.board.application.exception.NoticeNotFoundException; import leets.weeth.domain.board.domain.entity.Notice; import leets.weeth.domain.board.domain.repository.NoticeRepository; -import leets.weeth.domain.board.application.exception.NoticeNotFoundException; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Slice; import org.springframework.stereotype.Service; -import java.util.List; - @Service @RequiredArgsConstructor public class NoticeFindService { @@ -30,4 +29,10 @@ public Slice findRecentNotices(Pageable pageable) { return noticeRepository.findPageBy(pageable); } + public Slice search(String keyword, Pageable pageable) { + if(keyword == null || keyword.isEmpty()){ + return findRecentNotices(pageable); + } + return noticeRepository.search(keyword.strip(), pageable); + } } diff --git a/src/main/java/leets/weeth/domain/board/domain/service/PostFindService.java b/src/main/java/leets/weeth/domain/board/domain/service/PostFindService.java index f8565f6f..4576d04e 100644 --- a/src/main/java/leets/weeth/domain/board/domain/service/PostFindService.java +++ b/src/main/java/leets/weeth/domain/board/domain/service/PostFindService.java @@ -36,7 +36,25 @@ public List findByPart(Part part) { } public Slice findRecentPosts(Pageable pageable) { - return postRepository.findPageBy(pageable); + return postRepository.findRecentPart(pageable); + } + + public Slice findRecentEducationPosts(Pageable pageable) { + return postRepository.findRecentEducation(pageable); + } + + public Slice search(String keyword, Pageable pageable) { + if(keyword == null || keyword.isEmpty()){ + return findRecentPosts(pageable); + } + return postRepository.searchPart(keyword.strip(), pageable); + } + + public Slice searchEducation(String keyword, Pageable pageable) { + if(keyword == null || keyword.isEmpty()){ + return findRecentEducationPosts(pageable); + } + return postRepository.searchEducation(keyword.strip(), pageable); } public Slice findByPartAndOptionalFilters(Part part, Category category, Integer cardinalNumber, String studyName, Integer week, Pageable pageable) { @@ -46,33 +64,25 @@ public Slice findByPartAndOptionalFilters(Part part, Category category, In ); } - public Slice findEducationByCardinals(Collection cardinals, Pageable pageable) { + public Slice findEducationByCardinals(Part part, Collection cardinals, Pageable pageable) { if (cardinals == null || cardinals.isEmpty()) { return new SliceImpl<>(Collections.emptyList(), pageable, false); } - return postRepository.findByCategoryAndCardinalIn(Category.Education, cardinals, pageable); + String partName = (part != null ? part.name() : Part.ALL.name()); + + return postRepository.findByCategoryAndCardinalInWithPart(partName, Category.Education, cardinals, pageable); } - public Slice findEducationByCardinal(int cardinalNumber, Pageable pageable) { + public Slice findEducationByCardinal(Part part, int cardinalNumber, Pageable pageable) { + String partName = (part != null ? part.name() : Part.ALL.name()); - return postRepository.findByCategoryAndCardinalNumber( - Category.Education, cardinalNumber, pageable - ); + return postRepository.findByCategoryAndCardinalNumberWithPart(partName, Category.Education, cardinalNumber, pageable); } - public Slice findByCategory(Category category, int pageNumber, int pageSize) { + public Slice findByCategory(Part part, Category category, int pageNumber, int pageSize) { Pageable pageable = PageRequest.of(pageNumber, pageSize, Sort.by(Sort.Direction.DESC, "id")); + String partName = (part != null ? part.name() : Part.ALL.name()); - return postRepository.findByCategory(category, pageable); + return postRepository.findByCategoryWithPart(partName, category, pageable); } - - public Slice search(String keyword, Pageable pageable) { - if(keyword == null || keyword.isEmpty()){ - return findRecentPosts(pageable); - } - else{ - return postRepository.findByTitleContainingOrContentContainingIgnoreCase(keyword, keyword, pageable); - } - } - } diff --git a/src/main/java/leets/weeth/domain/board/presentation/NoticeController.java b/src/main/java/leets/weeth/domain/board/presentation/NoticeController.java index efa4c224..fa2fb70a 100644 --- a/src/main/java/leets/weeth/domain/board/presentation/NoticeController.java +++ b/src/main/java/leets/weeth/domain/board/presentation/NoticeController.java @@ -3,6 +3,7 @@ import static leets.weeth.domain.board.presentation.ResponseMessage.NOTICE_FIND_ALL_SUCCESS; import static leets.weeth.domain.board.presentation.ResponseMessage.NOTICE_FIND_BY_ID_SUCCESS; +import static leets.weeth.domain.board.presentation.ResponseMessage.NOTICE_SEARCH_SUCCESS; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -11,7 +12,11 @@ import leets.weeth.global.common.response.CommonResponse; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Slice; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; @Tag(name = "NOTICE", description = "공지사항 API") @@ -24,8 +29,7 @@ public class NoticeController { @GetMapping @Operation(summary="공지사항 목록 조회 [무한스크롤]") - public CommonResponse> findNotices(@RequestParam("pageNumber") int pageNumber, - @RequestParam("pageSize") int pageSize) { + public CommonResponse> findNotices(@RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize) { return CommonResponse.createSuccess(NOTICE_FIND_ALL_SUCCESS.getMessage(), noticeUsecase.findNotices(pageNumber, pageSize)); } @@ -34,4 +38,10 @@ public CommonResponse> findNotices(@RequestParam("p public CommonResponse findNoticeById(@PathVariable Long noticeId) { return CommonResponse.createSuccess(NOTICE_FIND_BY_ID_SUCCESS.getMessage(), noticeUsecase.findNotice(noticeId)); } + + @GetMapping("/search") + @Operation(summary="공지사항 검색 [무한스크롤]") + public CommonResponse> findNotice(@RequestParam String keyword, @RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize) { + return CommonResponse.createSuccess(NOTICE_SEARCH_SUCCESS.getMessage(), noticeUsecase.searchNotice(keyword, pageNumber, pageSize)); + } } diff --git a/src/main/java/leets/weeth/domain/board/presentation/PostController.java b/src/main/java/leets/weeth/domain/board/presentation/PostController.java index 77d07316..05714ed6 100644 --- a/src/main/java/leets/weeth/domain/board/presentation/PostController.java +++ b/src/main/java/leets/weeth/domain/board/presentation/PostController.java @@ -1,11 +1,13 @@ package leets.weeth.domain.board.presentation; +import static leets.weeth.domain.board.presentation.ResponseMessage.EDUCATION_SEARCH_SUCCESS; import static leets.weeth.domain.board.presentation.ResponseMessage.POST_CREATED_SUCCESS; import static leets.weeth.domain.board.presentation.ResponseMessage.POST_DELETED_SUCCESS; import static leets.weeth.domain.board.presentation.ResponseMessage.POST_EDU_FIND_SUCCESS; import static leets.weeth.domain.board.presentation.ResponseMessage.POST_FIND_ALL_SUCCESS; import static leets.weeth.domain.board.presentation.ResponseMessage.POST_FIND_BY_ID_SUCCESS; import static leets.weeth.domain.board.presentation.ResponseMessage.POST_PART_FIND_ALL_SUCCESS; +import static leets.weeth.domain.board.presentation.ResponseMessage.POST_SEARCH_SUCCESS; import static leets.weeth.domain.board.presentation.ResponseMessage.POST_UPDATED_SUCCESS; import io.swagger.v3.oas.annotations.Operation; @@ -65,15 +67,15 @@ public CommonResponse> findPartPosts(@ModelAttribute @GetMapping("/education") @Operation(summary="교육자료 조회 [무한스크롤]") - public CommonResponse> findEducationMaterials(@RequestParam(required = false) Integer cardinalNumber, @RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize, @Parameter(hidden = true) @CurrentUser Long userId) { + public CommonResponse> findEducationMaterials(@RequestParam Part part, @RequestParam(required = false) Integer cardinalNumber, @RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize, @Parameter(hidden = true) @CurrentUser Long userId) { - return CommonResponse.createSuccess(POST_EDU_FIND_SUCCESS.getMessage(), postUsecase.findEducationPosts(userId, cardinalNumber, pageNumber, pageSize)); + return CommonResponse.createSuccess(POST_EDU_FIND_SUCCESS.getMessage(), postUsecase.findEducationPosts(userId, part, cardinalNumber, pageNumber, pageSize)); } @GetMapping("/{boardId}") @Operation(summary="특정 게시글 조회") public CommonResponse findPost(@PathVariable Long boardId) { - return CommonResponse.createSuccess(POST_FIND_BY_ID_SUCCESS.getMessage(),postUsecase.findPost(boardId)); + return CommonResponse.createSuccess(POST_FIND_BY_ID_SUCCESS.getMessage(), postUsecase.findPost(boardId)); } @GetMapping("/part/studies") @@ -83,11 +85,18 @@ public CommonResponse findStudyNames(@RequestParam P return CommonResponse.createSuccess(ResponseMessage.POST_STUDY_NAMES_FIND_SUCCESS.getMessage(), postUsecase.findStudyNames(part)); } - @GetMapping("/search") - @Operation(summary="게시글 검색 [무한스크롤]") + @GetMapping("/search/part") + @Operation(summary="파트 게시글 검색 [무한스크롤]") public CommonResponse> findPost(@RequestParam String keyword, @RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize) { - return CommonResponse.createSuccess(POST_FIND_BY_ID_SUCCESS.getMessage(),postUsecase.searchPost(keyword, pageNumber, pageSize)); + return CommonResponse.createSuccess(POST_SEARCH_SUCCESS.getMessage(), postUsecase.searchPost(keyword, pageNumber, pageSize)); + } + + @GetMapping("/search/education") + @Operation(summary="교육자료 검색 [무한스크롤]") + public CommonResponse> findEducation(@RequestParam String keyword, @RequestParam("pageNumber") int pageNumber, + @RequestParam("pageSize") int pageSize) { + return CommonResponse.createSuccess(EDUCATION_SEARCH_SUCCESS.getMessage(), postUsecase.searchEducation(keyword, pageNumber, pageSize)); } @PatchMapping(value = "/{boardId}/part") @@ -105,5 +114,4 @@ public CommonResponse delete(@PathVariable Long boardId, @Parameter(hidd postUsecase.delete(boardId, userId); return CommonResponse.createSuccess(POST_DELETED_SUCCESS.getMessage()); } - } diff --git a/src/main/java/leets/weeth/domain/board/presentation/ResponseMessage.java b/src/main/java/leets/weeth/domain/board/presentation/ResponseMessage.java index f4c2bf5b..58eb4ad8 100644 --- a/src/main/java/leets/weeth/domain/board/presentation/ResponseMessage.java +++ b/src/main/java/leets/weeth/domain/board/presentation/ResponseMessage.java @@ -12,6 +12,7 @@ public enum ResponseMessage { //NoticeController 관련 NOTICE_FIND_ALL_SUCCESS("공지사항 목록이 성공적으로 조회되었습니다."), NOTICE_FIND_BY_ID_SUCCESS("공지사항이 성공적으로 조회되었습니다."), + NOTICE_SEARCH_SUCCESS("공지사항 검색 결과가 성공적으로 조회되었습니다."), //PostController 관련 POST_CREATED_SUCCESS("게시글이 성공적으로 생성되었습니다."), POST_UPDATED_SUCCESS("파트 게시글이 성공적으로 수정되었습니다."), @@ -19,7 +20,9 @@ public enum ResponseMessage { POST_FIND_ALL_SUCCESS("게시글 목록이 성공적으로 조회되었습니다."), POST_PART_FIND_ALL_SUCCESS("파트별 게시글 목록이 성공적으로 조회되었습니다."), POST_EDU_FIND_SUCCESS("교육 게시글 목록이 성공적으로 조회되었습니다."), - POST_FIND_BY_ID_SUCCESS("게시글이 성공적으로 조회되었습니다."), + POST_FIND_BY_ID_SUCCESS("파트 게시글이 성공적으로 조회되었습니다."), + POST_SEARCH_SUCCESS("파트 게시글 검색 결과가 성공적으로 조회되었습니다."), + EDUCATION_SEARCH_SUCCESS("교육 자료 검색 결과가 성공적으로 조회되었습니다."), POST_STUDY_NAMES_FIND_SUCCESS("스터디 이름 목록이 성공적으로 조회되었습니다."), EDUCATION_UPDATED_SUCCESS("교육자료가 성공적으로 수정되었습니다.");