diff --git a/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/Notice.kt b/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/Notice.kt index 9cd2447..6ce1f1b 100644 --- a/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/Notice.kt +++ b/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/Notice.kt @@ -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)) -} \ No newline at end of file +) \ No newline at end of file diff --git a/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/NoticeDetail.kt b/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/NoticeDetail.kt similarity index 67% rename from core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/NoticeDetail.kt rename to core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/NoticeDetail.kt index a7a509a..8c55d14 100644 --- a/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/NoticeDetail.kt +++ b/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/NoticeDetail.kt @@ -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, diff --git a/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/NoticeSimple.kt b/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/NoticeSimple.kt similarity index 61% rename from core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/NoticeSimple.kt rename to core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/NoticeSimple.kt index 16a2e18..3936df9 100644 --- a/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/NoticeSimple.kt +++ b/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/NoticeSimple.kt @@ -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, diff --git a/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/input/GetNoticeQuery.kt b/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/input/GetNoticeQuery.kt index b79c898..bfe46f8 100644 --- a/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/input/GetNoticeQuery.kt +++ b/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/input/GetNoticeQuery.kt @@ -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? diff --git a/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/LoadNoticePort.kt b/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/LoadNoticePort.kt index ea2ac9c..6166554 100644 --- a/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/LoadNoticePort.kt +++ b/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/LoadNoticePort.kt @@ -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? - fun loadNotice(id: Long): Notice? + fun loadNotices(pageable: Pageable): List? + fun loadNotice(id: Long): NoticeDetail? } \ No newline at end of file diff --git a/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/service/GetNoticeService.kt b/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/service/GetNoticeService.kt index 77401d7..b120549 100644 --- a/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/service/GetNoticeService.kt +++ b/core/demo-core/src/main/kotlin/me/jiniworld/demohx/application/notice/service/GetNoticeService.kt @@ -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) } \ No newline at end of file diff --git a/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/Notice.kt b/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/Notice.kt index 98b209d..43ab594 100644 --- a/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/Notice.kt +++ b/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/Notice.kt @@ -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( diff --git a/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/NoticeDetail.kt b/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/NoticeDetail.kt similarity index 67% rename from core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/NoticeDetail.kt rename to core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/NoticeDetail.kt index f5b5df1..b6b7d13 100644 --- a/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/NoticeDetail.kt +++ b/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/NoticeDetail.kt @@ -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, diff --git a/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/NoticeSimple.kt b/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/NoticeSimple.kt similarity index 62% rename from core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/NoticeSimple.kt rename to core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/NoticeSimple.kt index f0a22b7..f399997 100644 --- a/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/NoticeSimple.kt +++ b/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/domain/NoticeSimple.kt @@ -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, diff --git a/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/input/GetNoticeQuery.kt b/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/input/GetNoticeQuery.kt index 169e4cb..ea3617c 100644 --- a/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/input/GetNoticeQuery.kt +++ b/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/input/GetNoticeQuery.kt @@ -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? diff --git a/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/LoadNoticePort.kt b/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/LoadNoticePort.kt index c164e4a..1dfe395 100644 --- a/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/LoadNoticePort.kt +++ b/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/port/output/LoadNoticePort.kt @@ -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 - suspend fun loadNotice(id: String): Notice? + fun loadNotices(pageable: Pageable): Flow + suspend fun loadNotice(id: String): NoticeDetail? } \ No newline at end of file diff --git a/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/service/GetNoticeService.kt b/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/service/GetNoticeService.kt index 496efe5..5a1be8a 100644 --- a/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/service/GetNoticeService.kt +++ b/core/demo-reactive-core/src/main/kotlin/me/jiniworld/demohx/application/notice/service/GetNoticeService.kt @@ -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) } \ No newline at end of file diff --git a/infrastructure/datastore-mariadb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticeEntity.kt b/infrastructure/datastore-mariadb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticeEntity.kt index 713b722..7876cce 100644 --- a/infrastructure/datastore-mariadb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticeEntity.kt +++ b/infrastructure/datastore-mariadb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticeEntity.kt @@ -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)) } \ No newline at end of file diff --git a/infrastructure/datastore-mariadb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticePersistenceAdapter.kt b/infrastructure/datastore-mariadb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticePersistenceAdapter.kt index 78db876..90a1149 100644 --- a/infrastructure/datastore-mariadb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticePersistenceAdapter.kt +++ b/infrastructure/datastore-mariadb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticePersistenceAdapter.kt @@ -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 { - return noticeRepository.findAllBy(pageable).map { it.mapToNotice() } + override fun loadNotices(pageable: Pageable): Flow { + 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() } } \ No newline at end of file diff --git a/infrastructure/datastore-mariadb/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticeEntity.kt b/infrastructure/datastore-mariadb/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticeEntity.kt index 96e1d41..31e9038 100644 --- a/infrastructure/datastore-mariadb/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticeEntity.kt +++ b/infrastructure/datastore-mariadb/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticeEntity.kt @@ -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)) + } diff --git a/infrastructure/datastore-mariadb/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticePersistenceAdapter.kt b/infrastructure/datastore-mariadb/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticePersistenceAdapter.kt index 27fe872..0bdd378 100644 --- a/infrastructure/datastore-mariadb/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticePersistenceAdapter.kt +++ b/infrastructure/datastore-mariadb/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticePersistenceAdapter.kt @@ -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? { - return noticeRepository.findAllBy(pageable).map { it.mapToNotice() }.toList() + override fun loadNotices(pageable: Pageable): List? { + 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() } } \ No newline at end of file diff --git a/infrastructure/datastore-mongodb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticeDocument.kt b/infrastructure/datastore-mongodb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticeDocument.kt index b0b69e3..712054e 100644 --- a/infrastructure/datastore-mongodb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticeDocument.kt +++ b/infrastructure/datastore-mongodb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticeDocument.kt @@ -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)) + } diff --git a/infrastructure/datastore-mongodb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticePersistenceAdapter.kt b/infrastructure/datastore-mongodb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticePersistenceAdapter.kt index 78db876..90a1149 100644 --- a/infrastructure/datastore-mongodb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticePersistenceAdapter.kt +++ b/infrastructure/datastore-mongodb-reactive/src/main/kotlin/me/jiniworld/demohx/persistence/notice/NoticePersistenceAdapter.kt @@ -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 { - return noticeRepository.findAllBy(pageable).map { it.mapToNotice() } + override fun loadNotices(pageable: Pageable): Flow { + 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() } } \ No newline at end of file