From 359bea57f464a97e5b49d9d05da70be4331e452f Mon Sep 17 00:00:00 2001 From: kpeel Date: Thu, 17 Apr 2025 20:06:37 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20=EC=A0=84=EC=B2=B4=EC=A0=81=EC=9D=B8?= =?UTF-8?q?=20=EC=84=A4=EA=B3=84=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/service/SavedReportServiceTest.kt | 5 +- .../com/wespot/image/service/ImageService.kt | 4 +- .../wespot/common/ViewedOnBoardingSheet.kt | 4 +- .../main/kotlin/com/wespot/message/Message.kt | 10 +-- .../kotlin/com/wespot/message/MessageV2.kt | 31 +++++++++ .../wespot/user/message/AnonymousProfile.kt | 15 ++++ .../wespot/user/message/UsedAnswerMessage.kt | 12 ++++ .../view/OnBoardingExplanationComponent.kt | 6 +- .../view/OnBoardingWelcomePageComponent.kt | 4 +- .../common/ViewedOnBoardingJpaRepository.kt | 4 +- ...y.kt => ViewedOnBoardingSheetJpaEntity.kt} | 10 ++- .../common/ViewedOnBoardingSheetMapper.kt | 10 +-- .../message/{ => v1}/MessageJpaEntity.kt | 3 +- .../message/{ => v1}/MessageJpaRepository.kt | 3 +- .../wespot/message/{ => v1}/MessageMapper.kt | 4 +- .../{ => v1}/MessagePersistenceAdapter.kt | 4 +- .../wespot/message/v2/MessageJpaEntityV2.kt | 68 +++++++++++++++++++ .../message/v2/MessageV2JpaRepository.kt | 6 ++ .../com/wespot/message/v2/MessageV2Mapper.kt | 62 +++++++++++++++++ .../message/v2/MessageV2PersistenceAdapter.kt | 4 ++ .../AnonymousProfilePersistenceAdapter.kt | 4 ++ .../UsedAnswerMessagePersistenceAdapter.kt | 4 ++ .../message/AnonymousProfileJpaEntity.kt | 30 ++++++++ .../message/UsedAnswerMessageJpaEntity.kt | 23 +++++++ .../user/mapper/AnonymousProfileMapper.kt | 30 ++++++++ .../user/mapper/UsedAnswerMessageMapper.kt | 25 +++++++ .../AnonymousProfileJpaRepository.kt | 4 ++ .../UsedAnswerMessageJpaRepository.kt | 7 ++ 28 files changed, 369 insertions(+), 27 deletions(-) create mode 100644 domain/src/main/kotlin/com/wespot/message/MessageV2.kt create mode 100644 domain/src/main/kotlin/com/wespot/user/message/AnonymousProfile.kt create mode 100644 domain/src/main/kotlin/com/wespot/user/message/UsedAnswerMessage.kt rename infrastructure/mysql/src/main/kotlin/com/wespot/common/{ViewedOnBoardingSheetEntity.kt => ViewedOnBoardingSheetJpaEntity.kt} (71%) rename infrastructure/mysql/src/main/kotlin/com/wespot/message/{ => v1}/MessageJpaEntity.kt (94%) rename infrastructure/mysql/src/main/kotlin/com/wespot/message/{ => v1}/MessageJpaRepository.kt (98%) rename infrastructure/mysql/src/main/kotlin/com/wespot/message/{ => v1}/MessageMapper.kt (95%) rename infrastructure/mysql/src/main/kotlin/com/wespot/message/{ => v1}/MessagePersistenceAdapter.kt (97%) create mode 100644 infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageJpaEntityV2.kt create mode 100644 infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageV2JpaRepository.kt create mode 100644 infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageV2Mapper.kt create mode 100644 infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageV2PersistenceAdapter.kt create mode 100644 infrastructure/mysql/src/main/kotlin/com/wespot/user/adapter/AnonymousProfilePersistenceAdapter.kt create mode 100644 infrastructure/mysql/src/main/kotlin/com/wespot/user/adapter/UsedAnswerMessagePersistenceAdapter.kt create mode 100644 infrastructure/mysql/src/main/kotlin/com/wespot/user/entity/message/AnonymousProfileJpaEntity.kt create mode 100644 infrastructure/mysql/src/main/kotlin/com/wespot/user/entity/message/UsedAnswerMessageJpaEntity.kt create mode 100644 infrastructure/mysql/src/main/kotlin/com/wespot/user/mapper/AnonymousProfileMapper.kt create mode 100644 infrastructure/mysql/src/main/kotlin/com/wespot/user/mapper/UsedAnswerMessageMapper.kt create mode 100644 infrastructure/mysql/src/main/kotlin/com/wespot/user/repository/AnonymousProfileJpaRepository.kt create mode 100644 infrastructure/mysql/src/main/kotlin/com/wespot/user/repository/UsedAnswerMessageJpaRepository.kt diff --git a/app/src/test/kotlin/com/wespot/report/service/SavedReportServiceTest.kt b/app/src/test/kotlin/com/wespot/report/service/SavedReportServiceTest.kt index 23d2f257..e13c79f2 100644 --- a/app/src/test/kotlin/com/wespot/report/service/SavedReportServiceTest.kt +++ b/app/src/test/kotlin/com/wespot/report/service/SavedReportServiceTest.kt @@ -2,8 +2,8 @@ package com.wespot.report.service import com.wespot.common.service.ServiceTest import com.wespot.exception.CustomException -import com.wespot.message.MessageJpaRepository -import com.wespot.message.MessageMapper +import com.wespot.message.v1.MessageJpaRepository +import com.wespot.message.v1.MessageMapper import com.wespot.message.fixture.MessageFixture import com.wespot.report.ReportJpaRepository import com.wespot.report.ReportType @@ -11,7 +11,6 @@ import com.wespot.report.dto.ReportRequest import com.wespot.user.RestrictionType import com.wespot.user.fixture.UserFixture import com.wespot.user.mapper.UserMapper -import com.wespot.user.repository.RestrictionJpaRepository import com.wespot.user.repository.UserJpaRepository import io.kotest.assertions.throwables.shouldThrow import io.kotest.matchers.shouldBe diff --git a/core/src/main/kotlin/com/wespot/image/service/ImageService.kt b/core/src/main/kotlin/com/wespot/image/service/ImageService.kt index c770e000..fcc62e44 100644 --- a/core/src/main/kotlin/com/wespot/image/service/ImageService.kt +++ b/core/src/main/kotlin/com/wespot/image/service/ImageService.kt @@ -23,8 +23,8 @@ class ImageService( override fun createPresignedUrl(imageExtension: String, expirationTime: Long): PresignedResponse { val prefix = UUID.randomUUID() .toString() - .replace("-", "") // prefix is what ? - val imageName = "$prefix.$imageExtension" // image name is prefix and image extension + .replace("-", "") + val imageName = "$prefix.$imageExtension" val url = s3Port.getPresignedUrl(imageName, expirationTime) return PresignedResponse(url, imageName) diff --git a/domain/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheet.kt b/domain/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheet.kt index 83feafb4..12f423fc 100644 --- a/domain/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheet.kt +++ b/domain/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheet.kt @@ -7,6 +7,7 @@ data class ViewedOnBoardingSheet( val userId: Long, var isViewedMessageOnBoardingSheet: Boolean, var isViewedVoteOnBoardingSheet: Boolean, + var isViewedAnswerMessageOnBoardingSheet: Boolean, ) { companion object { @@ -21,7 +22,8 @@ data class ViewedOnBoardingSheet( id = 0, userId = userId, isViewedMessageOnBoardingSheet = false, - isViewedVoteOnBoardingSheet = false + isViewedVoteOnBoardingSheet = false, + isViewedAnswerMessageOnBoardingSheet = false ) } } diff --git a/domain/src/main/kotlin/com/wespot/message/Message.kt b/domain/src/main/kotlin/com/wespot/message/Message.kt index 20f5d866..8b12125d 100644 --- a/domain/src/main/kotlin/com/wespot/message/Message.kt +++ b/domain/src/main/kotlin/com/wespot/message/Message.kt @@ -27,7 +27,7 @@ data class Message( val isSenderDeleted: Boolean, val senderDeletedAt: LocalDateTime?, val isReceiverDeleted: Boolean, - val receiverDeletedAt: LocalDateTime? + val receiverDeletedAt: LocalDateTime?, ) { fun updateMessage( @@ -66,7 +66,7 @@ data class Message( isSenderDeleted = isSenderDeleted, senderDeletedAt = senderDeletedAt, isReceiverDeleted = isReceiverDeleted, - receiverDeletedAt = receiverDeletedAt + receiverDeletedAt = receiverDeletedAt, ) message.validateMessageReceiver() @@ -113,7 +113,7 @@ data class Message( isSenderDeleted = isSenderDeleted, senderDeletedAt = senderDeletedAt, isReceiverDeleted = isReceiverDeleted, - receiverDeletedAt = receiverDeletedAt + receiverDeletedAt = receiverDeletedAt, ) message.validateSentMessage(user) return message @@ -299,7 +299,7 @@ data class Message( isSenderDeleted = false, senderDeletedAt = null, isReceiverDeleted = false, - receiverDeletedAt = null + receiverDeletedAt = null, ) message.validateMessageReceiver() @@ -330,7 +330,7 @@ data class Message( isSenderDeleted = false, senderDeletedAt = null, isReceiverDeleted = false, - receiverDeletedAt = null + receiverDeletedAt = null, ) } diff --git a/domain/src/main/kotlin/com/wespot/message/MessageV2.kt b/domain/src/main/kotlin/com/wespot/message/MessageV2.kt new file mode 100644 index 00000000..1eb824f0 --- /dev/null +++ b/domain/src/main/kotlin/com/wespot/message/MessageV2.kt @@ -0,0 +1,31 @@ +package com.wespot.message + +import java.time.LocalDateTime + +data class MessageV2( + val id: Long, + val content: MessageContent, + val senderId: Long, + val senderName: String, + val receiverId: Long, + val isReceiverRead: Boolean, + val isAnonymous: Boolean, + val messageType: MessageType, + val readAt: LocalDateTime?, + val isSend: Boolean, + val sendAt: LocalDateTime?, + val receivedAt: LocalDateTime?, + val isReported: Boolean, + val createdAt: LocalDateTime, + val updatedAt: LocalDateTime, + val isSenderDeleted: Boolean, + val senderDeletedAt: LocalDateTime?, + val isReceiverDeleted: Boolean, + val receiverDeletedAt: LocalDateTime?, + + val messageRoomId: Long, + val anonymousProfileId: Long?, + val messageRoomOwnerId: Long, + val isBookmarked: Boolean +) { +} diff --git a/domain/src/main/kotlin/com/wespot/user/message/AnonymousProfile.kt b/domain/src/main/kotlin/com/wespot/user/message/AnonymousProfile.kt new file mode 100644 index 00000000..62cc0adc --- /dev/null +++ b/domain/src/main/kotlin/com/wespot/user/message/AnonymousProfile.kt @@ -0,0 +1,15 @@ +package com.wespot.user.message + +import com.wespot.user.User +import java.time.LocalDateTime + +class AnonymousProfile( + val id: Long, + val imageUrl: String, + val name: String, + val ownerId: User, + val receiverId: Long, + val createdAt: LocalDateTime, + val updatedAt: LocalDateTime, +) { +} diff --git a/domain/src/main/kotlin/com/wespot/user/message/UsedAnswerMessage.kt b/domain/src/main/kotlin/com/wespot/user/message/UsedAnswerMessage.kt new file mode 100644 index 00000000..2ac79f45 --- /dev/null +++ b/domain/src/main/kotlin/com/wespot/user/message/UsedAnswerMessage.kt @@ -0,0 +1,12 @@ +package com.wespot.user.message + +import java.time.LocalDateTime + +class UsedAnswerMessage( + val id: Long, + val userId: Long, + val isUsedAnswerMessageFeature: Boolean = false, + val createdAt: LocalDateTime, + val updatedAt: LocalDateTime +) { +} diff --git a/domain/src/main/kotlin/com/wespot/view/OnBoardingExplanationComponent.kt b/domain/src/main/kotlin/com/wespot/view/OnBoardingExplanationComponent.kt index 43c0b803..29602b8a 100644 --- a/domain/src/main/kotlin/com/wespot/view/OnBoardingExplanationComponent.kt +++ b/domain/src/main/kotlin/com/wespot/view/OnBoardingExplanationComponent.kt @@ -62,7 +62,8 @@ data class OnBoardingExplanationComponent( RichText.of("이해했어요", "#FF1B1C1E", 16, "Center", "SemiBold"), "#FFF6FE8B", "#FFC0C66B", - OnClickActionType.ACTION + OnClickActionType.ACTION, + Paddings.of(top = 8, bottom = 8) ) ), Paddings.of(start = 20, end = 20, bottom = 12, top = 12) @@ -116,7 +117,8 @@ data class OnBoardingExplanationComponent( RichText.of("이해했어요", "#FF1B1C1E", 16, "Center", "SemiBold"), "#FFF6FE8B", "#FFC0C66B", - OnClickActionType.ACTION + OnClickActionType.ACTION, + Paddings.of(top = 8, bottom = 8) ) ), Paddings.of(start = 20, end = 20, bottom = 12, top = 12) diff --git a/domain/src/main/kotlin/com/wespot/view/OnBoardingWelcomePageComponent.kt b/domain/src/main/kotlin/com/wespot/view/OnBoardingWelcomePageComponent.kt index 6beed13b..87ba04f0 100644 --- a/domain/src/main/kotlin/com/wespot/view/OnBoardingWelcomePageComponent.kt +++ b/domain/src/main/kotlin/com/wespot/view/OnBoardingWelcomePageComponent.kt @@ -33,7 +33,7 @@ data class OnBoardingWelcomePageComponent( "#FFF6FE8B", "#FFC0C66B", OnClickActionType.ACTION, - Paddings.of(top = 16, bottom = 16) + Paddings.of(top = 8, bottom = 8) ) ), Paddings.of(start = 20, end = 20, bottom = 12, top = 12) @@ -58,7 +58,7 @@ data class OnBoardingWelcomePageComponent( "#FFF6FE8B", "#FFC0C66B", OnClickActionType.ACTION, - Paddings.of(top = 16, bottom = 16) + Paddings.of(top = 8, bottom = 8) ) ), Paddings.of(start = 20, end = 20, bottom = 12, top = 12) diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingJpaRepository.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingJpaRepository.kt index 0650eb3b..c4503e09 100644 --- a/infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingJpaRepository.kt +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingJpaRepository.kt @@ -2,8 +2,8 @@ package com.wespot.common import org.springframework.data.jpa.repository.JpaRepository -interface ViewedOnBoardingJpaRepository : JpaRepository { +interface ViewedOnBoardingJpaRepository : JpaRepository { - fun findByUserId(userId: Long): ViewedOnBoardingSheetEntity? + fun findByUserId(userId: Long): ViewedOnBoardingSheetJpaEntity? } diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheetEntity.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheetJpaEntity.kt similarity index 71% rename from infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheetEntity.kt rename to infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheetJpaEntity.kt index bcb7d2a6..52f1b37d 100644 --- a/infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheetEntity.kt +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheetJpaEntity.kt @@ -5,7 +5,7 @@ import software.amazon.awssdk.annotations.NotNull @Entity @Table(name = "viewed_on_boarding_sheet", uniqueConstraints = [UniqueConstraint(columnNames = ["user_id"])]) -data class ViewedOnBoardingSheetEntity( +data class ViewedOnBoardingSheetJpaEntity( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long, @@ -13,12 +13,18 @@ data class ViewedOnBoardingSheetEntity( @field: NotNull val userId: Long, + @field: NotNull val isViewedMessageOnBoardingSheet: Boolean, + @field: NotNull val isViewedVoteOnBoardingSheet: Boolean, + @field: NotNull + val isViewedAnswerMessageOnBoardingSheet: Boolean, + @Embedded - val baseEntity: BaseEntity, + val baseEntity: BaseEntity + ) { } diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheetMapper.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheetMapper.kt index 21dae489..e3cb667d 100644 --- a/infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheetMapper.kt +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/common/ViewedOnBoardingSheetMapper.kt @@ -4,20 +4,22 @@ import java.time.LocalDateTime object ViewedOnBoardingSheetMapper { - fun mapToDomainEntity(viewedOnBoardingSheetEntity: ViewedOnBoardingSheetEntity): ViewedOnBoardingSheet = + fun mapToDomainEntity(viewedOnBoardingSheetEntity: ViewedOnBoardingSheetJpaEntity): ViewedOnBoardingSheet = ViewedOnBoardingSheet( id = viewedOnBoardingSheetEntity.id, userId = viewedOnBoardingSheetEntity.userId, isViewedVoteOnBoardingSheet = viewedOnBoardingSheetEntity.isViewedVoteOnBoardingSheet, - isViewedMessageOnBoardingSheet = viewedOnBoardingSheetEntity.isViewedMessageOnBoardingSheet + isViewedMessageOnBoardingSheet = viewedOnBoardingSheetEntity.isViewedMessageOnBoardingSheet, + isViewedAnswerMessageOnBoardingSheet = viewedOnBoardingSheetEntity.isViewedAnswerMessageOnBoardingSheet ) - fun mapToJpaEntity(viewedOnBoardingSheet: ViewedOnBoardingSheet): ViewedOnBoardingSheetEntity = - ViewedOnBoardingSheetEntity( + fun mapToJpaEntity(viewedOnBoardingSheet: ViewedOnBoardingSheet): ViewedOnBoardingSheetJpaEntity = + ViewedOnBoardingSheetJpaEntity( id = viewedOnBoardingSheet.id, userId = viewedOnBoardingSheet.userId, isViewedVoteOnBoardingSheet = viewedOnBoardingSheet.isViewedVoteOnBoardingSheet, isViewedMessageOnBoardingSheet = viewedOnBoardingSheet.isViewedMessageOnBoardingSheet, + isViewedAnswerMessageOnBoardingSheet = viewedOnBoardingSheet.isViewedAnswerMessageOnBoardingSheet, baseEntity = BaseEntity(LocalDateTime.now(), LocalDateTime.now()) ) diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/message/MessageJpaEntity.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v1/MessageJpaEntity.kt similarity index 94% rename from infrastructure/mysql/src/main/kotlin/com/wespot/message/MessageJpaEntity.kt rename to infrastructure/mysql/src/main/kotlin/com/wespot/message/v1/MessageJpaEntity.kt index 3f132a50..bb0bdc43 100644 --- a/infrastructure/mysql/src/main/kotlin/com/wespot/message/MessageJpaEntity.kt +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v1/MessageJpaEntity.kt @@ -1,6 +1,7 @@ -package com.wespot.message +package com.wespot.message.v1 import com.wespot.common.BaseEntity +import com.wespot.message.MessageType import jakarta.persistence.* import org.jetbrains.annotations.NotNull import java.time.LocalDateTime diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/message/MessageJpaRepository.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v1/MessageJpaRepository.kt similarity index 98% rename from infrastructure/mysql/src/main/kotlin/com/wespot/message/MessageJpaRepository.kt rename to infrastructure/mysql/src/main/kotlin/com/wespot/message/v1/MessageJpaRepository.kt index 935445f5..2ea46083 100644 --- a/infrastructure/mysql/src/main/kotlin/com/wespot/message/MessageJpaRepository.kt +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v1/MessageJpaRepository.kt @@ -1,5 +1,6 @@ -package com.wespot.message +package com.wespot.message.v1 +import com.wespot.message.MessageType import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/message/MessageMapper.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v1/MessageMapper.kt similarity index 95% rename from infrastructure/mysql/src/main/kotlin/com/wespot/message/MessageMapper.kt rename to infrastructure/mysql/src/main/kotlin/com/wespot/message/v1/MessageMapper.kt index 88e11cd0..c8a4d32e 100644 --- a/infrastructure/mysql/src/main/kotlin/com/wespot/message/MessageMapper.kt +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v1/MessageMapper.kt @@ -1,6 +1,8 @@ -package com.wespot.message +package com.wespot.message.v1 import com.wespot.common.BaseEntity +import com.wespot.message.Message +import com.wespot.message.MessageContent object MessageMapper { diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/message/MessagePersistenceAdapter.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v1/MessagePersistenceAdapter.kt similarity index 97% rename from infrastructure/mysql/src/main/kotlin/com/wespot/message/MessagePersistenceAdapter.kt rename to infrastructure/mysql/src/main/kotlin/com/wespot/message/v1/MessagePersistenceAdapter.kt index 0dc46b00..ec64a6cd 100644 --- a/infrastructure/mysql/src/main/kotlin/com/wespot/message/MessagePersistenceAdapter.kt +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v1/MessagePersistenceAdapter.kt @@ -1,5 +1,7 @@ -package com.wespot.message +package com.wespot.message.v1 +import com.wespot.message.Message +import com.wespot.message.MessageType import org.springframework.data.domain.Pageable import org.springframework.data.repository.findByIdOrNull import com.wespot.message.port.out.MessagePort diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageJpaEntityV2.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageJpaEntityV2.kt new file mode 100644 index 00000000..5da85855 --- /dev/null +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageJpaEntityV2.kt @@ -0,0 +1,68 @@ +package com.wespot.message.v2 + +import com.wespot.common.BaseEntity +import com.wespot.message.MessageType +import jakarta.persistence.* +import org.jetbrains.annotations.NotNull +import java.time.LocalDateTime + +@Entity +@Table(name = "message") +class MessageJpaEntityV2( + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val id: Long, + + @field: NotNull + val content: String, + + @field: NotNull + val senderId: Long, + + @field: NotNull + val senderName: String, + + @field: NotNull + val receiverId: Long, + + @field: NotNull + val isAnonymous: Boolean, + + @field: NotNull + val isReceiverRead: Boolean, + + @Enumerated(EnumType.STRING) + val messageType: MessageType, + + @field: NotNull + val isSend: Boolean, + + val sendAt: LocalDateTime?, + + val receivedAt: LocalDateTime?, + + val readAt: LocalDateTime?, + + @field: NotNull + val isReported: Boolean, + + @Embedded + val baseEntity: BaseEntity, + + @field: NotNull + val isSenderDeleted: Boolean, + + val senderDeletedAt: LocalDateTime?, + + @field: NotNull + val isReceiverDeleted: Boolean, + + val receiverDeletedAt: LocalDateTime?, + + val messageRoomId: Long, + val anonymousProfileId: Long?, + val messageRoomOwnerId: Long, + val isBookmarked: Boolean +) { + +} diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageV2JpaRepository.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageV2JpaRepository.kt new file mode 100644 index 00000000..398b9c56 --- /dev/null +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageV2JpaRepository.kt @@ -0,0 +1,6 @@ +package com.wespot.message.v2 + +import org.springframework.data.jpa.repository.JpaRepository + +interface MessageV2JpaRepository : JpaRepository { +} diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageV2Mapper.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageV2Mapper.kt new file mode 100644 index 00000000..d7428383 --- /dev/null +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageV2Mapper.kt @@ -0,0 +1,62 @@ +package com.wespot.message.v2 + +import com.wespot.common.BaseEntity +import com.wespot.message.MessageContent +import com.wespot.message.MessageV2 + +class MessageV2Mapper { + + fun mapToDomainEntity(messageJpaEntityV2: MessageJpaEntityV2): MessageV2 = MessageV2( + id = messageJpaEntityV2.id, + content = MessageContent.from(messageJpaEntityV2.content), + senderId = messageJpaEntityV2.senderId, + senderName = messageJpaEntityV2.senderName, + receiverId = messageJpaEntityV2.receiverId, + isAnonymous = messageJpaEntityV2.isAnonymous, + messageType = messageJpaEntityV2.messageType, + isReceiverRead = messageJpaEntityV2.isReceiverRead, + readAt = messageJpaEntityV2.readAt, + isSend = messageJpaEntityV2.isSend, + sendAt = messageJpaEntityV2.sendAt, + receivedAt = messageJpaEntityV2.receivedAt, + isReported = messageJpaEntityV2.isReported, + createdAt = messageJpaEntityV2.baseEntity.createdAt, + updatedAt = messageJpaEntityV2.baseEntity.updatedAt, + isSenderDeleted = messageJpaEntityV2.isSenderDeleted, + senderDeletedAt = messageJpaEntityV2.senderDeletedAt, + isReceiverDeleted = messageJpaEntityV2.isReceiverDeleted, + receiverDeletedAt = messageJpaEntityV2.receiverDeletedAt, + + messageRoomId = messageJpaEntityV2.messageRoomId, + messageRoomOwnerId = messageJpaEntityV2.messageRoomOwnerId, + anonymousProfileId = messageJpaEntityV2.anonymousProfileId, + isBookmarked = messageJpaEntityV2.isBookmarked + ) + + fun mapToJpaEntity(messageV2: MessageV2): MessageJpaEntityV2 = MessageJpaEntityV2( + id = messageV2.id, + content = messageV2.content.content, + senderId = messageV2.senderId, + senderName = messageV2.senderName, + receiverId = messageV2.receiverId, + isAnonymous = messageV2.isAnonymous, + messageType = messageV2.messageType, + isReceiverRead = messageV2.isReceiverRead, + readAt = messageV2.readAt, + isSend = messageV2.isSend, + sendAt = messageV2.sendAt, + receivedAt = messageV2.receivedAt, + isReported = messageV2.isReported, + baseEntity = BaseEntity(messageV2.createdAt, messageV2.updatedAt), + isSenderDeleted = messageV2.isSenderDeleted, + senderDeletedAt = messageV2.senderDeletedAt, + isReceiverDeleted = messageV2.isReceiverDeleted, + receiverDeletedAt = messageV2.receiverDeletedAt, + + messageRoomId = messageV2.messageRoomId, + messageRoomOwnerId = messageV2.messageRoomOwnerId, + anonymousProfileId = messageV2.anonymousProfileId, + isBookmarked = messageV2.isBookmarked + ) + +} diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageV2PersistenceAdapter.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageV2PersistenceAdapter.kt new file mode 100644 index 00000000..493e178e --- /dev/null +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/message/v2/MessageV2PersistenceAdapter.kt @@ -0,0 +1,4 @@ +package com.wespot.message.v2 + +class MessageV2PersistenceAdapter { +} diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/user/adapter/AnonymousProfilePersistenceAdapter.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/user/adapter/AnonymousProfilePersistenceAdapter.kt new file mode 100644 index 00000000..1a33796e --- /dev/null +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/user/adapter/AnonymousProfilePersistenceAdapter.kt @@ -0,0 +1,4 @@ +package com.wespot.user.adapter + +class AnonymousProfilePersistenceAdapter { +} diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/user/adapter/UsedAnswerMessagePersistenceAdapter.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/user/adapter/UsedAnswerMessagePersistenceAdapter.kt new file mode 100644 index 00000000..ef376e94 --- /dev/null +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/user/adapter/UsedAnswerMessagePersistenceAdapter.kt @@ -0,0 +1,4 @@ +package com.wespot.user.adapter + +class UsedAnswerMessagePersistenceAdapter { +} diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/user/entity/message/AnonymousProfileJpaEntity.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/user/entity/message/AnonymousProfileJpaEntity.kt new file mode 100644 index 00000000..1fd0dcbd --- /dev/null +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/user/entity/message/AnonymousProfileJpaEntity.kt @@ -0,0 +1,30 @@ +package com.wespot.user.entity.message + +import com.wespot.common.BaseEntity +import jakarta.persistence.* +import software.amazon.awssdk.annotations.NotNull + +@Entity +@Table(name = "anonymous_profile") +class AnonymousProfileJpaEntity( + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val id: Long, + + @field: NotNull + val imageUrl: String, + + @field: NotNull + val name: String, + + @field: NotNull + val ownerId: Long, + + @field: NotNull + val receiverId: Long, + + @Embedded + val baseEntity: BaseEntity + +) diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/user/entity/message/UsedAnswerMessageJpaEntity.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/user/entity/message/UsedAnswerMessageJpaEntity.kt new file mode 100644 index 00000000..1af328a6 --- /dev/null +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/user/entity/message/UsedAnswerMessageJpaEntity.kt @@ -0,0 +1,23 @@ +package com.wespot.user.entity.message + +import com.wespot.common.BaseEntity +import jakarta.persistence.* + + +@Entity +@Table(name = "used_answer_message") +class UsedAnswerMessageJpaEntity( + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val id: Long, + + val userId: Long, + + val isUsedAnswerMessageFeature: Boolean = false, + + @Embedded + val baseEntity: BaseEntity + +) { +} diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/user/mapper/AnonymousProfileMapper.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/user/mapper/AnonymousProfileMapper.kt new file mode 100644 index 00000000..1b9a1de5 --- /dev/null +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/user/mapper/AnonymousProfileMapper.kt @@ -0,0 +1,30 @@ +package com.wespot.user.mapper + +import com.wespot.common.BaseEntity +import com.wespot.user.User +import com.wespot.user.entity.message.AnonymousProfileJpaEntity +import com.wespot.user.message.AnonymousProfile + +object AnonymousProfileMapper { + + fun mapToDomainEntity(anonymousProfileJpaEntity: AnonymousProfileJpaEntity, owner: User): AnonymousProfile = + AnonymousProfile( + id = anonymousProfileJpaEntity.id, + imageUrl = anonymousProfileJpaEntity.imageUrl, + name = anonymousProfileJpaEntity.name, + createdAt = anonymousProfileJpaEntity.baseEntity.createdAt, + updatedAt = anonymousProfileJpaEntity.baseEntity.updatedAt, + ownerId = owner, + receiverId = anonymousProfileJpaEntity.receiverId + ) + + fun mapToJpaEntity(anonymousProfile: AnonymousProfile): AnonymousProfileJpaEntity = AnonymousProfileJpaEntity( + id = anonymousProfile.id, + imageUrl = anonymousProfile.imageUrl, + name = anonymousProfile.name, + baseEntity = BaseEntity(anonymousProfile.createdAt, anonymousProfile.updatedAt), + ownerId = anonymousProfile.ownerId.id, + receiverId = anonymousProfile.receiverId + ) + +} diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/user/mapper/UsedAnswerMessageMapper.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/user/mapper/UsedAnswerMessageMapper.kt new file mode 100644 index 00000000..b70965b3 --- /dev/null +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/user/mapper/UsedAnswerMessageMapper.kt @@ -0,0 +1,25 @@ +package com.wespot.user.mapper + +import com.wespot.common.BaseEntity +import com.wespot.user.entity.message.UsedAnswerMessageJpaEntity +import com.wespot.user.message.UsedAnswerMessage + +object UsedAnswerMessageMapper { + + fun mapToDomainEntity(usedAnswerMessageJpaEntity: UsedAnswerMessageJpaEntity): UsedAnswerMessage = + UsedAnswerMessage( + id = usedAnswerMessageJpaEntity.id, + userId = usedAnswerMessageJpaEntity.userId, + isUsedAnswerMessageFeature = usedAnswerMessageJpaEntity.isUsedAnswerMessageFeature, + createdAt = usedAnswerMessageJpaEntity.baseEntity.createdAt, + updatedAt = usedAnswerMessageJpaEntity.baseEntity.updatedAt + ) + + fun mapToJpaEntity(usedAnswerMessage: UsedAnswerMessage): UsedAnswerMessageJpaEntity = UsedAnswerMessageJpaEntity( + id = usedAnswerMessage.id, + userId = usedAnswerMessage.userId, + isUsedAnswerMessageFeature = usedAnswerMessage.isUsedAnswerMessageFeature, + baseEntity = BaseEntity(usedAnswerMessage.createdAt, usedAnswerMessage.updatedAt) + ) + +} diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/user/repository/AnonymousProfileJpaRepository.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/user/repository/AnonymousProfileJpaRepository.kt new file mode 100644 index 00000000..00347268 --- /dev/null +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/user/repository/AnonymousProfileJpaRepository.kt @@ -0,0 +1,4 @@ +package com.wespot.user.repository + +interface AnonymousProfileJpaRepository { +} diff --git a/infrastructure/mysql/src/main/kotlin/com/wespot/user/repository/UsedAnswerMessageJpaRepository.kt b/infrastructure/mysql/src/main/kotlin/com/wespot/user/repository/UsedAnswerMessageJpaRepository.kt new file mode 100644 index 00000000..a1f30ae1 --- /dev/null +++ b/infrastructure/mysql/src/main/kotlin/com/wespot/user/repository/UsedAnswerMessageJpaRepository.kt @@ -0,0 +1,7 @@ +package com.wespot.user.repository + +import com.wespot.user.entity.message.UsedAnswerMessageJpaEntity +import org.springframework.data.jpa.repository.JpaRepository + +interface UsedAnswerMessageJpaRepository : JpaRepository { +}