Skip to content

Commit cf2dc7a

Browse files
committed
feat: 지원자 조회 로직 구현
- 페이징 정책에 따라 20건 씩 응답
1 parent 8db4883 commit cf2dc7a

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
package dmu.dasom.api.domain.applicant.repository;
22

33
import dmu.dasom.api.domain.applicant.entity.Applicant;
4+
import org.springframework.data.domain.Page;
5+
import org.springframework.data.domain.Pageable;
46
import org.springframework.data.jpa.repository.JpaRepository;
7+
import org.springframework.data.jpa.repository.Query;
58

69
public interface ApplicantRepository extends JpaRepository<Applicant, Long> {
10+
11+
@Query("SELECT a FROM Applicant a ORDER BY a.id DESC")
12+
Page<Applicant> findAllWithPageRequest(final Pageable pageable);
13+
714
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package dmu.dasom.api.domain.applicant.service;
22

33
import dmu.dasom.api.domain.applicant.dto.ApplicantCreateRequestDto;
4+
import dmu.dasom.api.domain.applicant.dto.ApplicantResponseDto;
5+
import dmu.dasom.api.global.dto.PageResponse;
46

57
public interface ApplicantService {
68

79
void apply(final ApplicantCreateRequestDto request);
810

11+
PageResponse<ApplicantResponseDto> getApplicants(final int page);
12+
913
}

src/main/java/dmu/dasom/api/domain/applicant/service/ApplicantServiceImpl.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
package dmu.dasom.api.domain.applicant.service;
22

33
import dmu.dasom.api.domain.applicant.dto.ApplicantCreateRequestDto;
4+
import dmu.dasom.api.domain.applicant.dto.ApplicantResponseDto;
5+
import dmu.dasom.api.domain.applicant.entity.Applicant;
46
import dmu.dasom.api.domain.applicant.repository.ApplicantRepository;
7+
import dmu.dasom.api.domain.common.exception.CustomException;
8+
import dmu.dasom.api.domain.common.exception.ErrorCode;
9+
import dmu.dasom.api.global.dto.PageResponse;
510
import lombok.RequiredArgsConstructor;
11+
import org.springframework.data.domain.Page;
12+
import org.springframework.data.domain.PageRequest;
613
import org.springframework.stereotype.Service;
714

815
@RequiredArgsConstructor
916
@Service
1017
public class ApplicantServiceImpl implements ApplicantService {
1118

19+
private final static int DEFAULT_PAGE_SIZE = 20;
20+
1221
private final ApplicantRepository applicantRepository;
1322

1423
// 지원자 저장
@@ -17,4 +26,16 @@ public void apply(final ApplicantCreateRequestDto request) {
1726
applicantRepository.save(request.toEntity());
1827
}
1928

29+
// 지원자 조회
30+
@Override
31+
public PageResponse<ApplicantResponseDto> getApplicants(final int page) {
32+
final Page<Applicant> applicants = applicantRepository.findAllWithPageRequest(PageRequest.of(page, DEFAULT_PAGE_SIZE));
33+
34+
// 조회 조건에 따라 결과가 없을 수 있음
35+
if (applicants.isEmpty())
36+
throw new CustomException(ErrorCode.EMPTY_RESULT);
37+
38+
return PageResponse.from(applicants.map(Applicant::toApplicantResponse));
39+
}
40+
2041
}

0 commit comments

Comments
 (0)