diff --git a/src/build.gradle b/src/build.gradle new file mode 100644 index 00000000..f00a987f --- /dev/null +++ b/src/build.gradle @@ -0,0 +1,12 @@ +repositories { + mavenCentral() +} + +dependencies { + implementation project(":core:data") + implementation project(":core:time") + + implementation "org.springframework.boot:spring-boot-starter-data-jpa" + + testRuntimeOnly "com.h2database:h2" +} diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/Bookmark.kt b/src/main/kotlin/domain/feedback/Bookmark.kt similarity index 63% rename from survey/src/main/kotlin/me/nalab/survey/domain/feedback/Bookmark.kt rename to src/main/kotlin/domain/feedback/Bookmark.kt index 11241a44..4a2d34fe 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/Bookmark.kt +++ b/src/main/kotlin/domain/feedback/Bookmark.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.feedback +package domain.feedback import me.nalab.core.time.TimeUtil import java.time.Instant @@ -8,7 +8,7 @@ import javax.persistence.Embeddable @Embeddable class Bookmark( @Column(name = "is_bookmarked", nullable = false) - var isBookmarked: Boolean = BOOKMARK_DEFAULT_STATE, + var isBookmarked: Boolean = domain.feedback.Bookmark.Companion.BOOKMARK_DEFAULT_STATE, @Column(name = "bookmarked_at", columnDefinition = "TIMESTAMP(6)", nullable = false) var bookmarkedAt: Instant, @@ -17,6 +17,7 @@ class Bookmark( companion object { private const val BOOKMARK_DEFAULT_STATE = false - fun impossible(): Bookmark = Bookmark(bookmarkedAt = TimeUtil.toInstant()) + fun impossible(): domain.feedback.Bookmark = + domain.feedback.Bookmark(bookmarkedAt = TimeUtil.toInstant()) } } diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/ChoiceFormQuestionFeedback.kt b/src/main/kotlin/domain/feedback/ChoiceFormQuestionFeedback.kt similarity index 57% rename from survey/src/main/kotlin/me/nalab/survey/domain/feedback/ChoiceFormQuestionFeedback.kt rename to src/main/kotlin/domain/feedback/ChoiceFormQuestionFeedback.kt index 3cfb18bb..bfee6882 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/ChoiceFormQuestionFeedback.kt +++ b/src/main/kotlin/domain/feedback/ChoiceFormQuestionFeedback.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.feedback +package domain.feedback import javax.persistence.* @@ -7,11 +7,11 @@ class ChoiceFormQuestionFeedback( id: Long, formQuestionId: Long, isRead: Boolean = false, - bookmark: Bookmark = Bookmark.impossible(), - feedback: Feedback, + bookmark: domain.feedback.Bookmark = domain.feedback.Bookmark.Companion.impossible(), + feedback: domain.feedback.Feedback, @ElementCollection @Column(name = "selects") @CollectionTable(name = "selects", joinColumns = [JoinColumn(name = "form_feedback_id")]) private val selectedChoiceIds: MutableSet, -) : FormQuestionFeedbackable(id, formQuestionId, isRead, bookmark, feedback) +) : domain.feedback.FormQuestionFeedbackable(id, formQuestionId, isRead, bookmark, feedback) diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/Feedback.kt b/src/main/kotlin/domain/feedback/Feedback.kt similarity index 77% rename from survey/src/main/kotlin/me/nalab/survey/domain/feedback/Feedback.kt rename to src/main/kotlin/domain/feedback/Feedback.kt index d11fecb2..5f885d86 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/Feedback.kt +++ b/src/main/kotlin/domain/feedback/Feedback.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.feedback +package domain.feedback import me.nalab.core.data.common.TimeBaseEntity import javax.persistence.* @@ -18,17 +18,17 @@ class Feedback( fetch = FetchType.LAZY, cascade = [CascadeType.PERSIST, CascadeType.MERGE] ) - val questionFeedbacks: MutableList = mutableListOf(), + val questionFeedbacks: MutableList = mutableListOf(), @Column(name = "is_read", nullable = false) private var isRead: Boolean = false, @JoinColumn(name = "reviewer_id", nullable = false) @OneToOne(fetch = FetchType.LAZY, cascade = [CascadeType.PERSIST, CascadeType.MERGE]) - val reviewer: Reviewer, -) : Comparable, TimeBaseEntity() { + val reviewer: domain.feedback.Reviewer, +) : Comparable, TimeBaseEntity() { - override fun compareTo(other: Feedback): Int { + override fun compareTo(other: domain.feedback.Feedback): Int { if (updatedAt.isAfter(other.updatedAt)) { return -1 } diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/FormQuestionFeedbackable.kt b/src/main/kotlin/domain/feedback/FormQuestionFeedbackable.kt similarity index 80% rename from survey/src/main/kotlin/me/nalab/survey/domain/feedback/FormQuestionFeedbackable.kt rename to src/main/kotlin/domain/feedback/FormQuestionFeedbackable.kt index 2b6b9071..d9dda3f4 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/FormQuestionFeedbackable.kt +++ b/src/main/kotlin/domain/feedback/FormQuestionFeedbackable.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.feedback +package domain.feedback import javax.persistence.* @@ -17,9 +17,9 @@ abstract class FormQuestionFeedbackable( open var isRead: Boolean = false, @Embedded - open val bookmark: Bookmark, + open val bookmark: domain.feedback.Bookmark, @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "feedback_id") - val feedback: Feedback, + val feedback: domain.feedback.Feedback, ) diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/Reviewer.kt b/src/main/kotlin/domain/feedback/Reviewer.kt similarity index 80% rename from survey/src/main/kotlin/me/nalab/survey/domain/feedback/Reviewer.kt rename to src/main/kotlin/domain/feedback/Reviewer.kt index e0283add..3e21d05f 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/Reviewer.kt +++ b/src/main/kotlin/domain/feedback/Reviewer.kt @@ -1,7 +1,7 @@ -package me.nalab.survey.domain.feedback +package domain.feedback import me.nalab.core.data.common.TimeBaseEntity -import me.nalab.survey.domain.feedback.value.NickName +import domain.feedback.value.NickName import javax.persistence.Column import javax.persistence.Entity import javax.persistence.Id @@ -15,7 +15,7 @@ class Reviewer( val id: Long, @Column(name = "nick_name", nullable = false) - internal var nickName: NickName, + internal var nickName: domain.feedback.value.NickName, @Column(name = "collaboration_experience", nullable = false) val collaborationExperience: Boolean, diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/ShortFormQuestionFeedback.kt b/src/main/kotlin/domain/feedback/ShortFormQuestionFeedback.kt similarity index 62% rename from survey/src/main/kotlin/me/nalab/survey/domain/feedback/ShortFormQuestionFeedback.kt rename to src/main/kotlin/domain/feedback/ShortFormQuestionFeedback.kt index 0a888cce..6b48e24f 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/ShortFormQuestionFeedback.kt +++ b/src/main/kotlin/domain/feedback/ShortFormQuestionFeedback.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.feedback +package domain.feedback import javax.persistence.* @@ -7,11 +7,11 @@ class ShortFormQuestionFeedback( id: Long, formQuestionId: Long, isRead: Boolean = false, - bookmark: Bookmark, - feedback: Feedback, + bookmark: domain.feedback.Bookmark, + feedback: domain.feedback.Feedback, @ElementCollection @CollectionTable(name = "reply", joinColumns = [JoinColumn(name = "form_feedback_id")]) @Column(name = "replies") val replies: MutableList, -) : FormQuestionFeedbackable(id, formQuestionId, isRead, bookmark, feedback) +) : domain.feedback.FormQuestionFeedbackable(id, formQuestionId, isRead, bookmark, feedback) diff --git a/src/main/kotlin/domain/feedback/value/NickName.kt b/src/main/kotlin/domain/feedback/value/NickName.kt new file mode 100644 index 00000000..f4dc63a3 --- /dev/null +++ b/src/main/kotlin/domain/feedback/value/NickName.kt @@ -0,0 +1,28 @@ +package domain.feedback.value + +import javax.persistence.Embeddable + +@Embeddable +class NickName( + val value: String +) { + + companion object { + private const val FIRST_NAME = "A" + fun firstNickName(): domain.feedback.value.NickName = + domain.feedback.value.NickName(domain.feedback.value.NickName.Companion.FIRST_NAME) + + fun nextNickName(lastName: String): domain.feedback.value.NickName { + for (i in lastName.length - 1 downTo 0) { + if (lastName[i] != 'Z') { + return domain.feedback.value.NickName( + lastName.substring(0, i) + (lastName[i].code + 1).toChar() + "A".repeat( + lastName.length - (i + 1) + ) + ) + } + } + return domain.feedback.value.NickName("A".repeat(Math.max(0, lastName.length + 1))) + } + } +} diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/Choice.kt b/src/main/kotlin/domain/survey/Choice.kt similarity index 94% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/Choice.kt rename to src/main/kotlin/domain/survey/Choice.kt index 4a7d039d..70a9d3ad 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/Choice.kt +++ b/src/main/kotlin/domain/survey/Choice.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey +package domain.survey import javax.persistence.* diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/ChoiceFormQuestion.kt b/src/main/kotlin/domain/survey/ChoiceFormQuestion.kt similarity index 96% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/ChoiceFormQuestion.kt rename to src/main/kotlin/domain/survey/ChoiceFormQuestion.kt index f05c1041..c24ef0d3 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/ChoiceFormQuestion.kt +++ b/src/main/kotlin/domain/survey/ChoiceFormQuestion.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey +package domain.survey import me.nalab.survey.domain.survey.exception.DuplicatedOrderException import javax.persistence.* diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/ChoiceFormQuestionType.kt b/src/main/kotlin/domain/survey/ChoiceFormQuestionType.kt similarity index 63% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/ChoiceFormQuestionType.kt rename to src/main/kotlin/domain/survey/ChoiceFormQuestionType.kt index 2f57fbaf..0c04ba22 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/ChoiceFormQuestionType.kt +++ b/src/main/kotlin/domain/survey/ChoiceFormQuestionType.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey +package domain.survey enum class ChoiceFormQuestionType { TENDENCY, diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/FormQuestionable.kt b/src/main/kotlin/domain/survey/FormQuestionable.kt similarity index 95% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/FormQuestionable.kt rename to src/main/kotlin/domain/survey/FormQuestionable.kt index 01d60fa1..c5385810 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/FormQuestionable.kt +++ b/src/main/kotlin/domain/survey/FormQuestionable.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey +package domain.survey import me.nalab.core.data.common.TimeBaseEntity import javax.persistence.* diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/QuestionType.kt b/src/main/kotlin/domain/survey/QuestionType.kt similarity index 57% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/QuestionType.kt rename to src/main/kotlin/domain/survey/QuestionType.kt index 39183447..8499f1d6 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/QuestionType.kt +++ b/src/main/kotlin/domain/survey/QuestionType.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey +package domain.survey enum class QuestionType { CHOICE, diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/ShortFormQuestion.kt b/src/main/kotlin/domain/survey/ShortFormQuestion.kt similarity index 90% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/ShortFormQuestion.kt rename to src/main/kotlin/domain/survey/ShortFormQuestion.kt index 609d8580..71fb7f56 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/ShortFormQuestion.kt +++ b/src/main/kotlin/domain/survey/ShortFormQuestion.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey +package domain.survey import javax.persistence.* diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/ShortFormQuestionType.kt b/src/main/kotlin/domain/survey/ShortFormQuestionType.kt similarity index 67% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/ShortFormQuestionType.kt rename to src/main/kotlin/domain/survey/ShortFormQuestionType.kt index 67433a33..285e93d7 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/ShortFormQuestionType.kt +++ b/src/main/kotlin/domain/survey/ShortFormQuestionType.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey +package domain.survey enum class ShortFormQuestionType { STRENGTH, diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/Survey.kt b/src/main/kotlin/domain/survey/Survey.kt similarity index 96% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/Survey.kt rename to src/main/kotlin/domain/survey/Survey.kt index 69b4f4c1..ae9d2909 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/Survey.kt +++ b/src/main/kotlin/domain/survey/Survey.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey +package domain.survey import me.nalab.core.data.common.TimeBaseEntity import me.nalab.survey.domain.survey.exception.DuplicatedOrderException diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/SurveyBookmark.kt b/src/main/kotlin/domain/survey/SurveyBookmark.kt similarity index 87% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/SurveyBookmark.kt rename to src/main/kotlin/domain/survey/SurveyBookmark.kt index 4c09415f..4eeddf88 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/SurveyBookmark.kt +++ b/src/main/kotlin/domain/survey/SurveyBookmark.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey +package domain.survey import javax.persistence.Column import javax.persistence.Embeddable diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/SurveyRepository.kt b/src/main/kotlin/domain/survey/SurveyRepository.kt similarity index 75% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/SurveyRepository.kt rename to src/main/kotlin/domain/survey/SurveyRepository.kt index cfe7781b..198d7866 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/SurveyRepository.kt +++ b/src/main/kotlin/domain/survey/SurveyRepository.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey +package domain.survey import org.springframework.data.jpa.repository.JpaRepository diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/Target.kt b/src/main/kotlin/domain/survey/Target.kt similarity index 96% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/Target.kt rename to src/main/kotlin/domain/survey/Target.kt index 53f96526..ff05069f 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/Target.kt +++ b/src/main/kotlin/domain/survey/Target.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey +package domain.survey import me.nalab.core.data.common.TimeBaseEntity import me.nalab.survey.domain.survey.value.ImageUrl diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/exception/DuplicatedOrderException.kt b/src/main/kotlin/domain/survey/exception/DuplicatedOrderException.kt similarity index 81% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/exception/DuplicatedOrderException.kt rename to src/main/kotlin/domain/survey/exception/DuplicatedOrderException.kt index 796fb8a7..f24d1efc 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/exception/DuplicatedOrderException.kt +++ b/src/main/kotlin/domain/survey/exception/DuplicatedOrderException.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey.exception +package domain.survey.exception class DuplicatedOrderException internal constructor(duplicated: Int, orders: HashSet) : RuntimeException( diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/value/ImageUrl.kt b/src/main/kotlin/domain/survey/value/ImageUrl.kt similarity index 85% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/value/ImageUrl.kt rename to src/main/kotlin/domain/survey/value/ImageUrl.kt index 38bee468..4dcf0d6a 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/value/ImageUrl.kt +++ b/src/main/kotlin/domain/survey/value/ImageUrl.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey.value +package domain.survey.value import javax.persistence.Column import javax.persistence.Embeddable diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/value/Job.kt b/src/main/kotlin/domain/survey/value/Job.kt similarity index 84% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/value/Job.kt rename to src/main/kotlin/domain/survey/value/Job.kt index 41b37b3d..b052c3bc 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/value/Job.kt +++ b/src/main/kotlin/domain/survey/value/Job.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey.value +package domain.survey.value import javax.persistence.Column import javax.persistence.Embeddable diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/survey/value/Position.kt b/src/main/kotlin/domain/survey/value/Position.kt similarity index 85% rename from survey/src/main/kotlin/me/nalab/survey/domain/survey/value/Position.kt rename to src/main/kotlin/domain/survey/value/Position.kt index 3caf457a..ed477101 100644 --- a/survey/src/main/kotlin/me/nalab/survey/domain/survey/value/Position.kt +++ b/src/main/kotlin/domain/survey/value/Position.kt @@ -1,4 +1,4 @@ -package me.nalab.survey.domain.survey.value +package domain.survey.value import javax.persistence.Column import javax.persistence.Embeddable diff --git a/survey/build.gradle b/survey/build.gradle index f00a987f..e69de29b 100644 --- a/survey/build.gradle +++ b/survey/build.gradle @@ -1,12 +0,0 @@ -repositories { - mavenCentral() -} - -dependencies { - implementation project(":core:data") - implementation project(":core:time") - - implementation "org.springframework.boot:spring-boot-starter-data-jpa" - - testRuntimeOnly "com.h2database:h2" -} diff --git a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/value/NickName.kt b/survey/src/main/kotlin/me/nalab/survey/domain/feedback/value/NickName.kt deleted file mode 100644 index 4a31e598..00000000 --- a/survey/src/main/kotlin/me/nalab/survey/domain/feedback/value/NickName.kt +++ /dev/null @@ -1,25 +0,0 @@ -package me.nalab.survey.domain.feedback.value - -import javax.persistence.Embeddable - -@Embeddable -class NickName( - val value: String -) { - - companion object { - private const val FIRST_NAME = "A" - fun firstNickName(): NickName = NickName(FIRST_NAME) - - fun nextNickName(lastName: String): NickName { - for (i in lastName.length - 1 downTo 0) { - if (lastName[i] != 'Z') { - return NickName(lastName.substring(0, i) + (lastName[i].code + 1).toChar() + "A".repeat( - lastName.length - (i + 1) - )) - } - } - return NickName("A".repeat(Math.max(0, lastName.length + 1))) - } - } -}