아래 화면을 구성하기 위해서

내가 작성한 공고 데이터 전체 조회 API각 공고에 대해서 지원자 조회 API를 호출해야한다.

이 때 공고 데이터는 15개씩 불러오도록 페이징이 적용되어있고,

화면을 보여주기 위해서는 15개의 데이터에 각각 지원자 조회 API 를 순차적으로 호출해야했다.

image.png

기존 : 공고 데이터 전체 조회 API 호출 → 각 공고에 대한 지원자 API 하나씩 순차적 호출

결과 : 905ms

image.png

class GetJobPostingsInProgressUseCase @Inject constructor(
    private val jobPostingRepository: JobPostingRepository,
) {
    suspend operator fun invoke() = coroutineScope {
        val jobPostingResult = jobPostingRepository.getJobPostingsInProgress()

        jobPostingResult.mapCatching { jobPostings ->
            jobPostings.map { jobPosting ->
                val applicantCount = jobPostingRepository.getApplicantsCount(jobPosting.id).getOrThrow()
                jobPosting.copy(applicantCount = applicantCount)
            }
        }
    }
}