From 0e8e3611dca0ccf61917154a9edd2fc0b300ad19 Mon Sep 17 00:00:00 2001 From: dwl21 Date: Fri, 7 Feb 2025 17:45:14 +0900 Subject: [PATCH] =?UTF-8?q?=EC=98=88=EC=8B=9C=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/application/MessageController.kt | 37 -------- .../application/dto/MessageCreateRequest.kt | 15 ---- .../message/business/MessageCreatedCommand.kt | 11 --- .../message/business/MessageService.kt | 27 ------ .../message/business/dto/MessageResponse.kt | 17 ---- .../soongpt/message/implement/Message.kt | 7 -- .../message/implement/MessageReader.kt | 19 ----- .../message/implement/MessageRepository.kt | 7 -- .../message/implement/MessageWriter.kt | 14 --- .../soongpt/message/storage/MessageEntity.kt | 31 ------- .../message/storage/MessageRepositoryImpl.kt | 31 ------- .../exception/MessageNotFoundException.kt | 5 -- .../common/support/fixture/MessageFixture.kt | 20 ----- .../message/business/MessageServiceTest.kt | 85 ------------------- .../storage/MessageRepositoryImplTest.kt | 50 ----------- 15 files changed, 376 deletions(-) delete mode 100644 src/main/kotlin/com/yourssu/soongpt/message/application/MessageController.kt delete mode 100644 src/main/kotlin/com/yourssu/soongpt/message/application/dto/MessageCreateRequest.kt delete mode 100644 src/main/kotlin/com/yourssu/soongpt/message/business/MessageCreatedCommand.kt delete mode 100644 src/main/kotlin/com/yourssu/soongpt/message/business/MessageService.kt delete mode 100644 src/main/kotlin/com/yourssu/soongpt/message/business/dto/MessageResponse.kt delete mode 100644 src/main/kotlin/com/yourssu/soongpt/message/implement/Message.kt delete mode 100644 src/main/kotlin/com/yourssu/soongpt/message/implement/MessageReader.kt delete mode 100644 src/main/kotlin/com/yourssu/soongpt/message/implement/MessageRepository.kt delete mode 100644 src/main/kotlin/com/yourssu/soongpt/message/implement/MessageWriter.kt delete mode 100644 src/main/kotlin/com/yourssu/soongpt/message/storage/MessageEntity.kt delete mode 100644 src/main/kotlin/com/yourssu/soongpt/message/storage/MessageRepositoryImpl.kt delete mode 100644 src/main/kotlin/com/yourssu/soongpt/message/storage/exception/MessageNotFoundException.kt delete mode 100644 src/test/kotlin/com/yourssu/soongpt/common/support/fixture/MessageFixture.kt delete mode 100644 src/test/kotlin/com/yourssu/soongpt/message/business/MessageServiceTest.kt delete mode 100644 src/test/kotlin/com/yourssu/soongpt/message/storage/MessageRepositoryImplTest.kt diff --git a/src/main/kotlin/com/yourssu/soongpt/message/application/MessageController.kt b/src/main/kotlin/com/yourssu/soongpt/message/application/MessageController.kt deleted file mode 100644 index b88d46e..0000000 --- a/src/main/kotlin/com/yourssu/soongpt/message/application/MessageController.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.yourssu.soongpt.message.application - -import com.yourssu.soongpt.common.business.dto.Response -import com.yourssu.soongpt.message.application.dto.MessageCreateRequest -import com.yourssu.soongpt.message.business.dto.MessageResponse -import com.yourssu.soongpt.message.business.MessageService -import jakarta.validation.Valid -import org.jetbrains.annotations.NotNull -import org.springframework.http.HttpStatus -import org.springframework.http.ResponseEntity -import org.springframework.web.bind.annotation.* - -@RestController -@RequestMapping("/messages") -class MessageController( - private val messageService: MessageService, -) { - @PostMapping - fun create(@Valid @RequestBody request: MessageCreateRequest): ResponseEntity> { - val response = messageService.create(request.toCommand()) - return ResponseEntity.status(HttpStatus.CREATED) - .body(Response(result = response)) - } - - @GetMapping("/{messageId}") - fun find(@PathVariable @NotNull messageId: Long): ResponseEntity> { - val response = messageService.find(messageId) - return ResponseEntity.ok(Response(result = response)) - } - - @GetMapping - fun findAll(): ResponseEntity>> { - val response = messageService.findAll() - return ResponseEntity.ok(Response(result = response)) - } -} - diff --git a/src/main/kotlin/com/yourssu/soongpt/message/application/dto/MessageCreateRequest.kt b/src/main/kotlin/com/yourssu/soongpt/message/application/dto/MessageCreateRequest.kt deleted file mode 100644 index e59037b..0000000 --- a/src/main/kotlin/com/yourssu/soongpt/message/application/dto/MessageCreateRequest.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.yourssu.soongpt.message.application.dto - -import com.yourssu.soongpt.message.business.MessageCreatedCommand -import jakarta.validation.constraints.NotBlank - -data class MessageCreateRequest( - @NotBlank - val content: String, -) { - fun toCommand(): MessageCreatedCommand { - return MessageCreatedCommand( - content = content - ) - } -} \ No newline at end of file diff --git a/src/main/kotlin/com/yourssu/soongpt/message/business/MessageCreatedCommand.kt b/src/main/kotlin/com/yourssu/soongpt/message/business/MessageCreatedCommand.kt deleted file mode 100644 index bf7c2b7..0000000 --- a/src/main/kotlin/com/yourssu/soongpt/message/business/MessageCreatedCommand.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.yourssu.soongpt.message.business - -import com.yourssu.soongpt.message.implement.Message - -class MessageCreatedCommand( - val content: String -) { - fun toDomain(): Message { - return Message(content = content) - } -} diff --git a/src/main/kotlin/com/yourssu/soongpt/message/business/MessageService.kt b/src/main/kotlin/com/yourssu/soongpt/message/business/MessageService.kt deleted file mode 100644 index e21f130..0000000 --- a/src/main/kotlin/com/yourssu/soongpt/message/business/MessageService.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.yourssu.soongpt.message.business - -import com.yourssu.soongpt.message.business.dto.MessageResponse -import com.yourssu.soongpt.message.implement.MessageReader -import com.yourssu.soongpt.message.implement.MessageWriter -import org.springframework.stereotype.Service - -@Service -class MessageService( - private val messageWriter: MessageWriter, - private val messageReader: MessageReader, -) { - fun create(command: MessageCreatedCommand): MessageResponse { - val message = messageWriter.save(command.toDomain()) - return MessageResponse.from(message) - } - - fun find(messageId: Long) : MessageResponse { - val message = messageReader.find(messageId) - return MessageResponse.from(message) - } - - fun findAll(): List { - return messageReader.findAll().map { MessageResponse.from(it) } - } -} - diff --git a/src/main/kotlin/com/yourssu/soongpt/message/business/dto/MessageResponse.kt b/src/main/kotlin/com/yourssu/soongpt/message/business/dto/MessageResponse.kt deleted file mode 100644 index 21b1dca..0000000 --- a/src/main/kotlin/com/yourssu/soongpt/message/business/dto/MessageResponse.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.yourssu.soongpt.message.business.dto - -import com.yourssu.soongpt.message.implement.Message - -data class MessageResponse( - val id: Long, - val content: String -) { - companion object { - fun from(message: Message): MessageResponse { - return MessageResponse( - id = message.id!!, - content = message.content - ) - } - } -} \ No newline at end of file diff --git a/src/main/kotlin/com/yourssu/soongpt/message/implement/Message.kt b/src/main/kotlin/com/yourssu/soongpt/message/implement/Message.kt deleted file mode 100644 index 8885c4f..0000000 --- a/src/main/kotlin/com/yourssu/soongpt/message/implement/Message.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.yourssu.soongpt.message.implement - -class Message ( - val id: Long? = null, - val content: String, -) { -} \ No newline at end of file diff --git a/src/main/kotlin/com/yourssu/soongpt/message/implement/MessageReader.kt b/src/main/kotlin/com/yourssu/soongpt/message/implement/MessageReader.kt deleted file mode 100644 index fb51724..0000000 --- a/src/main/kotlin/com/yourssu/soongpt/message/implement/MessageReader.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.yourssu.soongpt.message.implement - -import org.springframework.stereotype.Component -import org.springframework.transaction.annotation.Transactional - -@Component -class MessageReader( - private val messageRepository: MessageRepository, -) { - @Transactional(readOnly = true) - fun find(id: Long): Message { - return messageRepository.get(id) - } - - @Transactional(readOnly = true) - fun findAll(): List { - return messageRepository.findAll() - } -} diff --git a/src/main/kotlin/com/yourssu/soongpt/message/implement/MessageRepository.kt b/src/main/kotlin/com/yourssu/soongpt/message/implement/MessageRepository.kt deleted file mode 100644 index b87dc20..0000000 --- a/src/main/kotlin/com/yourssu/soongpt/message/implement/MessageRepository.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.yourssu.soongpt.message.implement - -interface MessageRepository { - fun save(message: Message): Message - fun get(id: Long): Message - fun findAll(): List -} diff --git a/src/main/kotlin/com/yourssu/soongpt/message/implement/MessageWriter.kt b/src/main/kotlin/com/yourssu/soongpt/message/implement/MessageWriter.kt deleted file mode 100644 index f1a4e22..0000000 --- a/src/main/kotlin/com/yourssu/soongpt/message/implement/MessageWriter.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.yourssu.soongpt.message.implement - -import org.springframework.stereotype.Component -import org.springframework.transaction.annotation.Transactional - -@Component -class MessageWriter( - private val messageRepository: MessageRepository, -) { - @Transactional - fun save(message: Message): Message { - return messageRepository.save(message) - } -} \ No newline at end of file diff --git a/src/main/kotlin/com/yourssu/soongpt/message/storage/MessageEntity.kt b/src/main/kotlin/com/yourssu/soongpt/message/storage/MessageEntity.kt deleted file mode 100644 index f85066e..0000000 --- a/src/main/kotlin/com/yourssu/soongpt/message/storage/MessageEntity.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.yourssu.soongpt.message.storage - -import com.yourssu.soongpt.message.implement.Message -import jakarta.persistence.* - -@Table(name = "message") -@Entity -class MessageEntity( - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - var id: Long? = null, - - @Column(nullable = false) - val content: String, -) { - companion object { - fun from(message: Message): MessageEntity { - return MessageEntity( - id = message.id, - content = message.content, - ) - } - } - - fun toDomain(): Message { - return Message( - id = id, - content = content, - ) - } -} diff --git a/src/main/kotlin/com/yourssu/soongpt/message/storage/MessageRepositoryImpl.kt b/src/main/kotlin/com/yourssu/soongpt/message/storage/MessageRepositoryImpl.kt deleted file mode 100644 index 8741882..0000000 --- a/src/main/kotlin/com/yourssu/soongpt/message/storage/MessageRepositoryImpl.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.yourssu.soongpt.message.storage - -import com.yourssu.soongpt.message.implement.Message -import com.yourssu.soongpt.message.implement.MessageRepository -import com.yourssu.soongpt.message.storage.exception.MessageNotFoundException -import org.springframework.data.jpa.repository.JpaRepository -import org.springframework.stereotype.Repository - -@Repository -class MessageRepositoryImpl( - private val messageJpaRepository: MessageJpaRepository, -) : MessageRepository { - override fun save(message: Message): Message { - return messageJpaRepository.save(MessageEntity.from(message)) - .toDomain() - } - - override fun get(id: Long): Message { - return messageJpaRepository.findById(id) - .orElseThrow { MessageNotFoundException() } - .toDomain() - } - - override fun findAll(): List { - return messageJpaRepository.findAll() - .map { it.toDomain() } - } -} - -interface MessageJpaRepository : JpaRepository { -} diff --git a/src/main/kotlin/com/yourssu/soongpt/message/storage/exception/MessageNotFoundException.kt b/src/main/kotlin/com/yourssu/soongpt/message/storage/exception/MessageNotFoundException.kt deleted file mode 100644 index 935760e..0000000 --- a/src/main/kotlin/com/yourssu/soongpt/message/storage/exception/MessageNotFoundException.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.yourssu.soongpt.message.storage.exception - -import com.yourssu.soongpt.common.handler.NotFoundException - -class MessageNotFoundException : NotFoundException(message = "해당하는 메세지가 없습니다.") \ No newline at end of file diff --git a/src/test/kotlin/com/yourssu/soongpt/common/support/fixture/MessageFixture.kt b/src/test/kotlin/com/yourssu/soongpt/common/support/fixture/MessageFixture.kt deleted file mode 100644 index 8ff4b82..0000000 --- a/src/test/kotlin/com/yourssu/soongpt/common/support/fixture/MessageFixture.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.yourssu.soongpt.common.support.fixture - -import com.yourssu.soongpt.message.business.MessageCreatedCommand -import com.yourssu.soongpt.message.implement.Message - -enum class MessageFixture( - val content: String, -) { - HELLO_WORLD( - content = "Hello, World!", - ); - - fun toDomain(): Message { - return Message(content = content) - } - - fun toCreatedCommand(): MessageCreatedCommand { - return MessageCreatedCommand(content = content) - } -} diff --git a/src/test/kotlin/com/yourssu/soongpt/message/business/MessageServiceTest.kt b/src/test/kotlin/com/yourssu/soongpt/message/business/MessageServiceTest.kt deleted file mode 100644 index d7b50e5..0000000 --- a/src/test/kotlin/com/yourssu/soongpt/message/business/MessageServiceTest.kt +++ /dev/null @@ -1,85 +0,0 @@ -package com.yourssu.soongpt.message.business - -import com.yourssu.soongpt.common.support.config.ApplicationTest -import com.yourssu.soongpt.common.support.fixture.MessageFixture.HELLO_WORLD -import com.yourssu.soongpt.message.implement.Message -import com.yourssu.soongpt.message.implement.MessageReader -import com.yourssu.soongpt.message.implement.MessageWriter -import org.junit.jupiter.api.* -import org.junit.jupiter.api.Assertions.assertNotNull -import org.springframework.beans.factory.annotation.Autowired -import kotlin.test.assertEquals - -@ApplicationTest -class MessageServiceTest { - @Autowired - lateinit var messageService: MessageService - - @Autowired - lateinit var messageReader: MessageReader - - @Autowired - lateinit var messageWriter: MessageWriter - - @Nested - @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores::class) - inner class create_메서드는 { - @Nested - @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores::class) - inner class 메세지_본문을_받으면 { - @Test - @DisplayName("메세지를 생성한다.") - fun success() { - val response = messageService.create(HELLO_WORLD.toCreatedCommand()) - - assertNotNull(response) - } - } - } - - @Nested - @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores::class) - inner class findById_메서드는 { - var message: Message? = null - - @BeforeEach - fun setUp() { - message = messageWriter.save(HELLO_WORLD.toDomain()) - } - - @Nested - @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores::class) - inner class 메세지_아이디를_받으면 { - @Test - @DisplayName("해당하는 메세지 응답을 반환한다.") - fun success() { - val actual = messageService.find(message!!.id!!) - - assertEquals(message!!.id, actual.id) - } - } - } - - @Nested - @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores::class) - inner class findAll_메서드는 { - @BeforeEach - fun setUp() { - messageWriter.save(HELLO_WORLD.toDomain()) - messageWriter.save(HELLO_WORLD.toDomain()) - } - - @Nested - @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores::class) - inner class 요청을_받으면 { - @Test - @DisplayName("모든 메세지 응답을 반환한다.") - fun success() { - val response = messageService.findAll() - - assertEquals(2, response.size) - } - } - } - -} \ No newline at end of file diff --git a/src/test/kotlin/com/yourssu/soongpt/message/storage/MessageRepositoryImplTest.kt b/src/test/kotlin/com/yourssu/soongpt/message/storage/MessageRepositoryImplTest.kt deleted file mode 100644 index 1f51b2b..0000000 --- a/src/test/kotlin/com/yourssu/soongpt/message/storage/MessageRepositoryImplTest.kt +++ /dev/null @@ -1,50 +0,0 @@ -package com.yourssu.soongpt.message.storage - -import com.yourssu.soongpt.common.support.config.ApplicationTest -import com.yourssu.soongpt.common.support.fixture.MessageFixture.HELLO_WORLD -import com.yourssu.soongpt.message.implement.Message -import com.yourssu.soongpt.message.implement.MessageRepository -import com.yourssu.soongpt.message.storage.exception.MessageNotFoundException -import org.junit.jupiter.api.* -import org.junit.jupiter.api.Assertions.assertEquals -import org.springframework.beans.factory.annotation.Autowired - -@ApplicationTest -class MessageRepositoryImplTest { - - @Autowired - private lateinit var messageRepository: MessageRepository - - @Nested - @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores::class) - inner class get_메서드는 { - private var message: Message? = null - - @Nested - @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores::class) - inner class 메세지_아이디가_있으면 { - @BeforeEach - fun setUp() { - message = messageRepository.save(HELLO_WORLD.toDomain()) - } - - @Test - @DisplayName("해당하는 메서드 객체를 반환한다.") - fun success() { - val actual = messageRepository.get(message!!.id!!) - - assertEquals(message!!.id!!, actual.id) - } - } - - @Nested - @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores::class) - inner class 메세지_아이디가_없으면 { - @Test - @DisplayName("MessageNotFound 예외를 던진다.") - fun failure() { - assertThrows { messageRepository.get(0L) } - } - } - } -} \ No newline at end of file