generated from pricelees/issue-pr-template
48 lines
1.7 KiB
Kotlin
48 lines
1.7 KiB
Kotlin
package roomescape.theme.implement
|
|
|
|
import io.github.oshai.kotlinlogging.KLogger
|
|
import io.github.oshai.kotlinlogging.KotlinLogging
|
|
import org.springframework.data.repository.findByIdOrNull
|
|
import org.springframework.stereotype.Component
|
|
import roomescape.theme.exception.ThemeErrorCode
|
|
import roomescape.theme.exception.ThemeException
|
|
import roomescape.theme.infrastructure.persistence.ThemeEntity
|
|
import roomescape.theme.infrastructure.persistence.ThemeRepository
|
|
import java.time.LocalDate
|
|
|
|
private val log: KLogger = KotlinLogging.logger {}
|
|
|
|
@Component
|
|
class ThemeFinder(
|
|
private val themeRepository: ThemeRepository
|
|
) {
|
|
fun findAll(): List<ThemeEntity> {
|
|
log.debug { "[ThemeFinder.findAll] 시작" }
|
|
|
|
return themeRepository.findAll()
|
|
.also { log.debug { "[TimeFinder.findAll] ${it.size}개 테마 조회 완료" } }
|
|
}
|
|
|
|
fun findById(id: Long): ThemeEntity {
|
|
log.debug { "[ThemeFinder.findById] 조회 시작: memberId=$id" }
|
|
|
|
return themeRepository.findByIdOrNull(id)
|
|
?.also { log.debug { "[ThemeFinder.findById] 조회 완료: id=$id, name=${it.name}" } }
|
|
?: run {
|
|
log.warn { "[ThemeFinder.findById] 조회 실패: id=$id" }
|
|
throw ThemeException(ThemeErrorCode.THEME_NOT_FOUND)
|
|
}
|
|
}
|
|
|
|
fun findMostReservedThemes(
|
|
count: Int,
|
|
startFrom: LocalDate,
|
|
endAt: LocalDate
|
|
): List<ThemeEntity> {
|
|
log.debug { "[ThemeFinder.findMostReservedThemes] 시작. count=$count, startFrom=$startFrom, endAt=$endAt" }
|
|
|
|
return themeRepository.findPopularThemes(startFrom, endAt, count)
|
|
.also { log.debug { "[ThemeFinder.findMostReservedThemes] ${it.size} / ${count}개 테마 조회 완료" } }
|
|
}
|
|
}
|