속도 개선을 위해 domain 수정

This commit is contained in:
jini
2023-03-07 23:20:36 +09:00
parent c675c10417
commit 78e8f9b7ec
18 changed files with 68 additions and 48 deletions

View File

@@ -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))
}
)

View File

@@ -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,

View File

@@ -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,

View File

@@ -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>?

View File

@@ -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?
}

View File

@@ -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)
}

View File

@@ -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(

View File

@@ -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,

View File

@@ -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,

View File

@@ -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>?

View File

@@ -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?
}

View File

@@ -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)
}

View File

@@ -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))
}

View File

@@ -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()
}
}

View File

@@ -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))
}

View File

@@ -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()
}
}

View File

@@ -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))
}

View File

@@ -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()
}
}