Skip to content

Commit

Permalink
refactor : 마감순 정렬 로직 수정(#128)
Browse files Browse the repository at this point in the history
  • Loading branch information
isprogrammingfun committed May 21, 2024
1 parent 6afffa7 commit 3770d52
Showing 1 changed file with 16 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import com.bamyanggang.domainmodule.domain.jobDescription.aggregate.JobDescripti
import com.bamyanggang.domainmodule.domain.jobDescription.enums.SortType
import com.bamyanggang.domainmodule.domain.jobDescription.enums.WriteStatus
import com.bamyanggang.domainmodule.domain.jobDescription.repository.JobDescriptionRepository
import java.time.LocalDateTime
import java.time.temporal.ChronoUnit
import java.util.*

class JobDescriptionReader(
Expand All @@ -13,11 +15,24 @@ class JobDescriptionReader(
fun readJobDescriptionByUserIdAndSortType(userId: UUID, page: Int, size: Int, sortType: SortType?, writeStatus: WriteStatus?): PageDomain<JobDescription> {
return when(sortType) {
SortType.CREATED -> jobDescriptionRepository.findAllByUserIdAndSortByCreatedAt(userId, page, size, writeStatus)
SortType.ENDED -> jobDescriptionRepository.findAllByUserIdAndSortByEndedAt(userId, page, size, writeStatus)
SortType.ENDED -> sortWithEndedAt(jobDescriptionRepository.findAllByUserId(userId, page, size, writeStatus))
else -> jobDescriptionRepository.findAllByUserId(userId, page, size, writeStatus)
}
}

private fun sortWithEndedAt (pageDomain: PageDomain<JobDescription>): PageDomain<JobDescription> {
val now = LocalDateTime.now()
val futureList = pageDomain.content.filter { it.endedAt.isAfter(now) }
val pastList = pageDomain.content.filter { it.endedAt.isBefore(now) }

val sortedFutureList = futureList.sortedWith(compareBy { kotlin.math.abs(ChronoUnit.DAYS.between(it.endedAt, now)) })
val sortedPastList = pastList.sortedWith(compareByDescending { it.endedAt })

val sortedList = sortedFutureList + sortedPastList

return PageDomain(sortedList, pageDomain.pageNumber, pageDomain.pageSize, pageDomain.totalPage, pageDomain.hasNext)
}

fun readJobDescriptionById(jobDescriptionId: UUID): JobDescription {
return jobDescriptionRepository.findById(jobDescriptionId)
}
Expand Down

0 comments on commit 3770d52

Please sign in to comment.