Skip to content

[Feat/#23] 파일 목록 조회 기능 (검색 정렬 페이징)

곽영일 requested to merge feat/#23 into dev

📋 구현 내용

엑셀 파일 목록 조회 기능

  • 동적 검색 조건
    • excelInfoId
      • eq
      • in
      • not in
    • fileName
      • equal
      • like
    • createdAt
      • lt ( minCreatedAt )
      • gt ( maxCreatedAt )
      • between ( minCreatedAt, maxCreatedAt )
  • 동적 정렬 조건
    • createdAt
      • ASC
      • DESC
    • fileName
      • ASC
      • DESC
  • 페이징 ( limit, offset )
    • limit 20 ( 요청 값으로 변경 가능)
  • 복합 검색, 정렬 조건
    • 위의 조건들이 같이 붙어도 동작해야한다.
  • 테스트 코드 작성

🔍 테스트 케이스

  • 동적 검색 조건, 페이징
  • 동적 정렬 조건, 페이징
  • 복합 조건, 페이징

📢 코멘트

  • 테스트 코드 작성 시 객체의 생성 날짜를 임의로 설정하기 위해 엔티티에 @SuperBuilder를 적용해보았지만, save발생 시 jpa에서 삽입 시간을 강제하여 의미가 없었습니다.
  • 다행히 생성 날짜를 굳이 바꾸지 않아도 테스트 코드를 작성할 수 있었지만, @SpringBootTest에서는 메소드마다 영속성컨텍스트를 비우기 어려워 작성한 테스트 코드를 ExcelInfoClassTest 클래스에서 ExcelInfoRepository 클래스로 옮겨 @DataJpaTest의 주입을 받아 테스트하였습니다.
  • @DataJpaTest에서도 QueryDSL의존성을 주입받을 수 있도록 관련 설정 파일을 만들었습니다.
  • 추후 service 계층의 테스트 코드와 페이징 성능을 개선해보도록 하겠습니다.
    • 성능 개선은 커버링 인덱스를 적용하려 했으나, isDelete를 인덱스 걸어야 가능하여 잠정 중단.. 하겠습니다.
  • FileListRequestDtoLong excelInfoId 에서 List<Long> excelInfoIdList으로 변경하였습니다.
    • Array와 List 둘다 사용 가능하지만, Array는 크기만큼 데이터가 들어있지 않으면 not in 연산자에서 에러가 발생합니다.
  • QueryDSL에서 필요한 데이터만 가져오도록 생성자 프로젝션을 사용하였습니다.

not_in_리스트_테스트_Edited

not_in_배열_테스트_Edited2

@Endo @woody @Tobi

Edited by 곽영일

Merge request reports