Skip to content

QueryDSL를 활용한 동적 검색 기능 추가#159

Open
IM-GYURI wants to merge 20 commits intoESJung95:developfrom
IM-GYURI:feature/search
Open

QueryDSL를 활용한 동적 검색 기능 추가#159
IM-GYURI wants to merge 20 commits intoESJung95:developfrom
IM-GYURI:feature/search

Conversation

@IM-GYURI
Copy link
Copy Markdown
Collaborator

@IM-GYURI IM-GYURI commented Aug 19, 2024

변경사항

AS-IS

  • 채용 공고 필터 기능 부재
  • 채용 공고 검색 기능 부재

TO-BE

  • build.gradle : QueryDSL 설정 추가

  • JobPostingEntity

    • JobCategory와 Education 필드에 @Enumerated(EnumType.STRING) 추가
    • 기존의 로직으로는 DB에 저장될 때, Enum값이 아닌 Enum의 인덱스 값(e.g. 0, 1, ...)이 저장됨
    • 숫자가 아닌 Enum값으로 DB에
      저장하기 위해 @Enumerated(EnumType.STRING) 추가
  • QuerDSL를 사용한 필터 구현

  • QueryDSL를 사용한 키워드 검색 구현

    • JobPostingEntity, JobPostingTechStackEntity, CompanyEntity 간의 조인과 조건 기반 필터링을 통해 키워드 검색 기능 구현
    • JobPostingRepositoryCustom: searchJobPostingsByKeyword()의 파라미터 설정
    • JobPostingRepositoryCustomImpl: searchJobPostingsByKeyword() 구현
      • 키워드가 채용 공고의 제목, 내용, 회사명, 기술 스택 등과 일치하거나 포함된 경우, 해당 채용 공고의 jobPostingKey를 반환함
      • JobPostingEntity, JobPostingTechStackEntity, CompanyEntity를 jobPostingKey와 companyKey를 기반으로 leftJoin하고, 조건에 맞는 채용 공고의 jobPostingKey를 List 형식으로 반환
      • 이 때, 중복 처리를 위해 selectDistinct() 사용
    • api : http://localhost:8080/job-postings/search?keyword=프론트
  • QuerydslConfig : JPAQueryFactory 설정

  • SearchController : "/job-postings/search"와 "/job-postings/filter"를 GetMapping함

  • SearchService

    • jobPostingRepositoryCustom.searchJobPostings()를 서비스로 구현함
    • jobPostingRepositoryCustom.searchJobPostingsByKeyword()를 서비스로 구현함
  • SecurityConfig : "/job-postings/search"와 "/job-postings/filter"에 권한 없이 접근 가능하도록 설정 추가

테스트

  • API 테스트

GLORY-JI and others added 15 commits July 29, 2024 14:38
채용공고 조회 캐싱 적용 & jobPostingStepId unique 제약 조건 설정
채용 공고 단계를 올릴 때 appliedJobPosting stepName update, test code 수정
merge develop branch to main branch
merge develop branch to main branch
- main 브랜치에 README.md 파일만 변경되어 푸시되는 경우에는 자동 배포 워크플로우가 실행 안됨
- 기존의 로직으로는 DB에 저장될 때, Enum 값이 아닌 Enum의 인덱스 값(e.g. 0, 1, ...)이 저장됨
- 숫자가 아닌 Enum값으로 저장하기 위해 @Enumerated(EnumType.STRING) 추가
- 검색 기능 테스트용 api 추가
@IM-GYURI IM-GYURI requested review from ESJung95 and Goldbar97 August 19, 2024 11:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants