⚡ 속도 개선을 위해 domain 수정
This commit is contained in:
@@ -1,8 +1,5 @@
|
||||
package me.jiniworld.demohx.application.notice.domain
|
||||
|
||||
import me.jiniworld.demohx.DateTimeUtils
|
||||
import me.jiniworld.demohx.application.notice.port.output.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.port.output.NoticeSimple
|
||||
import java.time.LocalDateTime
|
||||
|
||||
data class Notice(
|
||||
@@ -10,10 +7,4 @@ data class Notice(
|
||||
val title: String,
|
||||
val content: String,
|
||||
val createdAt: LocalDateTime,
|
||||
) {
|
||||
fun mapToNoticeSimple() =
|
||||
NoticeSimple(id = id, title = title, createdOn = DateTimeUtils.toDateString(createdAt))
|
||||
|
||||
fun mapToNoticeDetail() =
|
||||
NoticeDetail(id = id, title = title, content = content, createdAt = DateTimeUtils.toString(createdAt))
|
||||
}
|
||||
)
|
||||
@@ -1,4 +1,4 @@
|
||||
package me.jiniworld.demohx.application.notice.port.output
|
||||
package me.jiniworld.demohx.application.notice.domain
|
||||
|
||||
data class NoticeDetail(
|
||||
val id: Long,
|
||||
@@ -1,4 +1,4 @@
|
||||
package me.jiniworld.demohx.application.notice.port.output
|
||||
package me.jiniworld.demohx.application.notice.domain
|
||||
|
||||
data class NoticeSimple(
|
||||
val id: Long,
|
||||
@@ -1,7 +1,7 @@
|
||||
package me.jiniworld.demohx.application.notice.port.input
|
||||
|
||||
import me.jiniworld.demohx.application.notice.port.output.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.port.output.NoticeSimple
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeSimple
|
||||
|
||||
interface GetNoticeQuery {
|
||||
fun getNoticeSimples(command: GetNoticesCommand): List<NoticeSimple>?
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package me.jiniworld.demohx.application.notice.port.output
|
||||
|
||||
import me.jiniworld.demohx.application.notice.domain.Notice
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeSimple
|
||||
import org.springframework.data.domain.Pageable
|
||||
|
||||
interface LoadNoticePort {
|
||||
fun loadNotices(pageable: Pageable): List<Notice>?
|
||||
fun loadNotice(id: Long): Notice?
|
||||
fun loadNotices(pageable: Pageable): List<NoticeSimple>?
|
||||
fun loadNotice(id: Long): NoticeDetail?
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
package me.jiniworld.demohx.application.notice.service
|
||||
|
||||
import me.jiniworld.demohx.annotation.UseCase
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.port.input.GetNoticeQuery
|
||||
import me.jiniworld.demohx.application.notice.port.input.GetNoticesCommand
|
||||
import me.jiniworld.demohx.application.notice.port.output.LoadNoticePort
|
||||
import me.jiniworld.demohx.application.notice.port.output.NoticeDetail
|
||||
import org.springframework.data.domain.PageRequest
|
||||
import org.springframework.data.domain.Sort
|
||||
import org.springframework.transaction.annotation.Transactional
|
||||
@@ -17,8 +17,7 @@ internal class GetNoticeService(
|
||||
|
||||
override fun getNoticeSimples(command: GetNoticesCommand) =
|
||||
loadNoticePort.loadNotices(PageRequest.of(command.page, command.size, Sort.by(Sort.Order.desc("id"))))
|
||||
?.map { it.mapToNoticeSimple() }
|
||||
|
||||
override fun getNoticeDetail(id: Long): NoticeDetail? =
|
||||
loadNoticePort.loadNotice(id)?.mapToNoticeDetail()
|
||||
loadNoticePort.loadNotice(id)
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
package me.jiniworld.demohx.application.notice.domain
|
||||
|
||||
import me.jiniworld.demohx.DateTimeUtils
|
||||
import me.jiniworld.demohx.application.notice.port.output.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.port.output.NoticeSimple
|
||||
import java.time.LocalDateTime
|
||||
|
||||
data class Notice(
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package me.jiniworld.demohx.application.notice.port.output
|
||||
package me.jiniworld.demohx.application.notice.domain
|
||||
|
||||
data class NoticeDetail(
|
||||
val id: String,
|
||||
@@ -1,4 +1,4 @@
|
||||
package me.jiniworld.demohx.application.notice.port.output
|
||||
package me.jiniworld.demohx.application.notice.domain
|
||||
|
||||
data class NoticeSimple(
|
||||
val id: String,
|
||||
@@ -1,7 +1,7 @@
|
||||
package me.jiniworld.demohx.application.notice.port.input
|
||||
|
||||
import me.jiniworld.demohx.application.notice.port.output.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.port.output.NoticeSimple
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeSimple
|
||||
|
||||
interface GetNoticeQuery {
|
||||
suspend fun getNoticeSimples(command: GetNoticesCommand): List<NoticeSimple>?
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
package me.jiniworld.demohx.application.notice.port.output
|
||||
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import me.jiniworld.demohx.application.notice.domain.Notice
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeSimple
|
||||
import org.springframework.data.domain.Pageable
|
||||
|
||||
interface LoadNoticePort {
|
||||
fun loadNotices(pageable: Pageable): Flow<Notice>
|
||||
suspend fun loadNotice(id: String): Notice?
|
||||
fun loadNotices(pageable: Pageable): Flow<NoticeSimple>
|
||||
suspend fun loadNotice(id: String): NoticeDetail?
|
||||
}
|
||||
@@ -1,12 +1,11 @@
|
||||
package me.jiniworld.demohx.application.notice.service
|
||||
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.toList
|
||||
import me.jiniworld.demohx.annotation.UseCase
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.port.input.GetNoticeQuery
|
||||
import me.jiniworld.demohx.application.notice.port.input.GetNoticesCommand
|
||||
import me.jiniworld.demohx.application.notice.port.output.LoadNoticePort
|
||||
import me.jiniworld.demohx.application.notice.port.output.NoticeDetail
|
||||
import org.springframework.data.domain.PageRequest
|
||||
import org.springframework.data.domain.Sort
|
||||
import org.springframework.transaction.annotation.Transactional
|
||||
@@ -20,9 +19,8 @@ internal class GetNoticeService(
|
||||
override suspend fun getNoticeSimples(command: GetNoticesCommand) =
|
||||
loadNoticePort.loadNotices(PageRequest.of(command.page, command.size, Sort.by(
|
||||
Sort.Order.desc("id"))))
|
||||
.map { it.mapToNoticeSimple() }
|
||||
.toList()
|
||||
|
||||
override suspend fun getNoticeDetail(id: String): NoticeDetail? =
|
||||
loadNoticePort.loadNotice(id)?.mapToNoticeDetail()
|
||||
loadNoticePort.loadNotice(id)
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
package me.jiniworld.demohx.persistence.notice
|
||||
|
||||
import me.jiniworld.demohx.DateTimeUtils
|
||||
import me.jiniworld.demohx.application.notice.domain.Notice
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeSimple
|
||||
import org.springframework.data.annotation.CreatedDate
|
||||
import org.springframework.data.annotation.Id
|
||||
import org.springframework.data.annotation.LastModifiedDate
|
||||
@@ -24,4 +27,10 @@ internal class NoticeDocument {
|
||||
|
||||
fun mapToNotice() =
|
||||
Notice(id = id, title = title, content = content, createdAt = createdAt)
|
||||
|
||||
fun mapToNoticeSimple() =
|
||||
NoticeSimple(id = id, title = title, createdOn = DateTimeUtils.toDateString(createdAt))
|
||||
|
||||
fun mapToNoticeDetail() =
|
||||
NoticeDetail(id = id, title = title, content = content, createdAt = DateTimeUtils.toString(createdAt))
|
||||
}
|
||||
@@ -3,7 +3,8 @@ package me.jiniworld.demohx.persistence.notice
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.map
|
||||
import me.jiniworld.demohx.annotation.PersistenceAdapter
|
||||
import me.jiniworld.demohx.application.notice.domain.Notice
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeSimple
|
||||
import me.jiniworld.demohx.application.notice.port.output.LoadNoticePort
|
||||
import org.springframework.data.domain.Pageable
|
||||
|
||||
@@ -11,11 +12,11 @@ import org.springframework.data.domain.Pageable
|
||||
internal class NoticePersistenceAdapter(
|
||||
private val noticeRepository: NoticeRepository,
|
||||
) : LoadNoticePort {
|
||||
override fun loadNotices(pageable: Pageable): Flow<Notice> {
|
||||
return noticeRepository.findAllBy(pageable).map { it.mapToNotice() }
|
||||
override fun loadNotices(pageable: Pageable): Flow<NoticeSimple> {
|
||||
return noticeRepository.findAllBy(pageable).map { it.mapToNoticeSimple() }
|
||||
}
|
||||
|
||||
override suspend fun loadNotice(id: String): Notice? {
|
||||
return noticeRepository.findById(id)?.mapToNotice()
|
||||
override suspend fun loadNotice(id: String): NoticeDetail? {
|
||||
return noticeRepository.findById(id)?.mapToNoticeDetail()
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
package me.jiniworld.demohx.persistence.notice
|
||||
|
||||
import me.jiniworld.demohx.DateTimeUtils
|
||||
import me.jiniworld.demohx.application.notice.domain.Notice
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeSimple
|
||||
import org.springframework.data.annotation.CreatedDate
|
||||
import org.springframework.data.annotation.LastModifiedDate
|
||||
import java.time.LocalDateTime
|
||||
@@ -28,4 +31,11 @@ internal class NoticeEntity {
|
||||
|
||||
fun mapToNotice() =
|
||||
Notice(id = id, title = title, content = content, createdAt = createdAt)
|
||||
|
||||
fun mapToNoticeSimple() =
|
||||
NoticeSimple(id = id, title = title, createdOn = DateTimeUtils.toDateString(createdAt))
|
||||
|
||||
fun mapToNoticeDetail() =
|
||||
NoticeDetail(id = id, title = title, content = content, createdAt = DateTimeUtils.toString(createdAt))
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package me.jiniworld.demohx.persistence.notice
|
||||
|
||||
import me.jiniworld.demohx.annotation.PersistenceAdapter
|
||||
import me.jiniworld.demohx.application.notice.domain.Notice
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeSimple
|
||||
import me.jiniworld.demohx.application.notice.port.output.LoadNoticePort
|
||||
import org.springframework.data.domain.Pageable
|
||||
import org.springframework.data.repository.findByIdOrNull
|
||||
@@ -10,11 +11,11 @@ import org.springframework.data.repository.findByIdOrNull
|
||||
internal class NoticePersistenceAdapter(
|
||||
private val noticeRepository: NoticeRepository,
|
||||
) : LoadNoticePort {
|
||||
override fun loadNotices(pageable: Pageable): List<Notice>? {
|
||||
return noticeRepository.findAllBy(pageable).map { it.mapToNotice() }.toList()
|
||||
override fun loadNotices(pageable: Pageable): List<NoticeSimple>? {
|
||||
return noticeRepository.findAllBy(pageable).map { it.mapToNoticeSimple() }.toList()
|
||||
}
|
||||
|
||||
override fun loadNotice(id: Long): Notice? {
|
||||
return noticeRepository.findByIdOrNull(id)?.mapToNotice()
|
||||
override fun loadNotice(id: Long): NoticeDetail? {
|
||||
return noticeRepository.findByIdOrNull(id)?.mapToNoticeDetail()
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
package me.jiniworld.demohx.persistence.notice
|
||||
|
||||
import me.jiniworld.demohx.DateTimeUtils
|
||||
import me.jiniworld.demohx.application.notice.domain.Notice
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeSimple
|
||||
import org.springframework.data.annotation.CreatedDate
|
||||
import org.springframework.data.annotation.Id
|
||||
import org.springframework.data.annotation.LastModifiedDate
|
||||
@@ -24,4 +27,11 @@ internal class NoticeDocument {
|
||||
|
||||
fun mapToNotice() =
|
||||
Notice(id = id, title = title, content = content, createdAt = createdAt)
|
||||
|
||||
fun mapToNoticeSimple() =
|
||||
NoticeSimple(id = id, title = title, createdOn = DateTimeUtils.toDateString(createdAt))
|
||||
|
||||
fun mapToNoticeDetail() =
|
||||
NoticeDetail(id = id, title = title, content = content, createdAt = DateTimeUtils.toString(createdAt))
|
||||
|
||||
}
|
||||
|
||||
@@ -3,7 +3,8 @@ package me.jiniworld.demohx.persistence.notice
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.map
|
||||
import me.jiniworld.demohx.annotation.PersistenceAdapter
|
||||
import me.jiniworld.demohx.application.notice.domain.Notice
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeDetail
|
||||
import me.jiniworld.demohx.application.notice.domain.NoticeSimple
|
||||
import me.jiniworld.demohx.application.notice.port.output.LoadNoticePort
|
||||
import org.springframework.data.domain.Pageable
|
||||
|
||||
@@ -11,11 +12,11 @@ import org.springframework.data.domain.Pageable
|
||||
internal class NoticePersistenceAdapter(
|
||||
private val noticeRepository: NoticeRepository,
|
||||
) : LoadNoticePort {
|
||||
override fun loadNotices(pageable: Pageable): Flow<Notice> {
|
||||
return noticeRepository.findAllBy(pageable).map { it.mapToNotice() }
|
||||
override fun loadNotices(pageable: Pageable): Flow<NoticeSimple> {
|
||||
return noticeRepository.findAllBy(pageable).map { it.mapToNoticeSimple() }
|
||||
}
|
||||
|
||||
override suspend fun loadNotice(id: String): Notice? {
|
||||
return noticeRepository.findById(id)?.mapToNotice()
|
||||
override suspend fun loadNotice(id: String): NoticeDetail? {
|
||||
return noticeRepository.findById(id)?.mapToNoticeDetail()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user