이수아

[개별 스크럼]10. 31(화) 검색기능, 단위테스트공부

모잉프로젝트 2023. 11. 1. 02:17

검색 기능을 맡았다. 게시글을 검색하는 기능을 스프링부트를 통해 만들기로 했다. 

 

브랜치를 새로 파려는데...

error: cannot update the ref 'refs/remotes/origin/develop': unable to append to '.git/logs/refs/remotes/origin/develop': Permission denied
From https://github.com/KNU-Moing/moing-backend
 ! 6160182..2a0c4e1  develop    -> origin/develop  (unable to update local ref)
error: cannot update the ref 'refs/remotes/origin/main': unable to append to '.git/logs/refs/remotes/origin/main': Permission denied
 ! 98738fc..f644cd6  main       -> origin/main  (unable to update local ref)

이런 오류가 남

 

깃허브 데스크탑에서 권한설정이 되어있지 않아 나는 오류였다. 왜 갑자기 그렇게 된 것인지 알 수는 없음..

 

git bash에서 해당 레포지토리로 이동하고 chmod명령어로 설정하니 해결!

# 리포지토리 디렉토리로 이동
cd /c/path/to/your/repository

# 모든 권한을 부여 (주의: 보안 문제가 있을 수 있으니 적절히 사용하세요.)
chmod -R 777 .

그리고 검색기능을 찾아보려 한다... question 엔티티에 title을 넣어줬기 때문에 title을 검색 기능을 넣어주려고 함

https://rebornbb.tistory.com/entry/Springboot-%EA%B2%8C%EC%8B%9C%ED%8C%90%EB%94%B0%EB%9D%BC%ED%95%98%EA%B8%B08-%EA%B2%80%EC%83%89-%EA%B8%B0%EB%8A%A5-%E2%9C%94%EC%A0%95%EB%A6%AC#JPA%20Repository%C2%A0-1

 

[Springboot] 게시판따라하기(8) - 검색 기능 ✔정리

원본 영상 링크: https://www.youtube.com/watch?v=Y7S1xXsKy_w&list=PLZzruF3-_clsWF2aULPsUPomgolJ-idGJ&index=8 JPA Repository findBy(컬럼이름) → 컬럼에서 키워드를 넣어서 찾겠다 *정확하게 키워드가 일치하는 데이터만 검

rebornbb.tistory.com

이 블로그를 많이 참고했다

 

우리 프로젝트는 프론드, 백으로 나누어져있어서 백에서는 model로 add할 필요가 없어서 컨트롤러에서 return을 ResponseEntity.body~~로 해주면 됐다.

public interface QuestionRepository extends JpaRepository<Question, Long> {
    List<Question> findByTitleContaining(String searchKeyword);
}

먼저 findByTitleContaining 함수를 만들어주는데 키워드를 입력하면 그것을 포함한 모든 리스트를 출력하는 것이다 Containing이 없으면 그 글자 그대로이고 있으면 포함이다

 

    @Override
    public List<Question> questionSearchList(String searchKeyword) {
        return questionRepository.findByTitleContaining(searchKeyword);    }

Service 코드에 추가해주고 

    @ApiImplicitParams({
            @ApiImplicitParam(name = "X-AUTH-TOKEN", value = "로그인 성공 후 발급 받은 access_token", required = true, dataType = "String", paramType = "header")
    })
    @GetMapping("/board/list")
    public ResponseEntity<List<Question>> boardList(String searchKeyword){

        /*검색기능-3*/
        List<Question> list = null;

        /*searchKeyword = 검색하는 단어*/
        if(searchKeyword == null){
            list =questionService.getAllQuestions(); //기존의 리스트보여줌
        }else{
            list = questionService.questionSearchList(searchKeyword); //검색리스트반환
        }

        return ResponseEntity.status(HttpStatus.OK).body(list);
    }

컨트롤러에 이런 코드를 추가해서 title에 검색어가 포함된 List를 출력하도록 했다. 

 

Question DB에 데이터가 이렇게 들어가 있을 때 Swagger로 '제'를 검색해줬다.

searchKeyword에 '제'를 넣으면 title에 '제'가 들어간 데이터가 리스트로 출력된다 ! 완성