Skip to content

Commit 7ac3306

Browse files
committed
리뷰 반영
1 parent b5ee5d6 commit 7ac3306

10 files changed

Lines changed: 44 additions & 42 deletions

File tree

api/src/main/kotlin/handler/DiaryHandler.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.wafflestudio.snutt.handler
33
import com.wafflestudio.snutt.common.dto.OkResponse
44
import com.wafflestudio.snutt.common.enum.Semester
55
import com.wafflestudio.snutt.common.exception.InvalidPathParameterException
6-
import com.wafflestudio.snutt.diary.dto.DiaryActivityTypeDto
6+
import com.wafflestudio.snutt.diary.dto.DiaryActivityDto
77
import com.wafflestudio.snutt.diary.dto.DiaryQuestionDto
88
import com.wafflestudio.snutt.diary.dto.DiarySubmissionSummaryDto
99
import com.wafflestudio.snutt.diary.dto.request.DiaryQuestionnaireRequestDto
@@ -48,7 +48,7 @@ class DiaryHandler(
4848
suspend fun getActivities(req: ServerRequest) =
4949
handle(req) {
5050
diaryService.getActiveActivities().map {
51-
DiaryActivityTypeDto(it)
51+
DiaryActivityDto(it)
5252
}
5353
}
5454

api/src/main/kotlin/router/docs/AdminDocs.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.wafflestudio.snutt.clientconfig.dto.PatchConfigRequest
55
import com.wafflestudio.snutt.clientconfig.dto.PostConfigRequest
66
import com.wafflestudio.snutt.common.dto.OkResponse
77
import com.wafflestudio.snutt.common.storage.dto.FileUploadUriDto
8-
import com.wafflestudio.snutt.diary.dto.DiaryActivityTypeDto
8+
import com.wafflestudio.snutt.diary.dto.DiaryActivityDto
99
import com.wafflestudio.snutt.diary.dto.DiaryQuestionDto
1010
import com.wafflestudio.snutt.diary.dto.request.DiaryAddQuestionRequestDto
1111
import com.wafflestudio.snutt.popup.dto.PopupResponse
@@ -203,7 +203,7 @@ import org.springframework.web.bind.annotation.RequestMethod
203203
responses = [
204204
ApiResponse(
205205
responseCode = "200",
206-
content = [Content(array = ArraySchema(schema = Schema(implementation = DiaryActivityTypeDto::class)))],
206+
content = [Content(array = ArraySchema(schema = Schema(implementation = DiaryActivityDto::class)))],
207207
),
208208
],
209209
),

api/src/main/kotlin/router/docs/DiaryDocs.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.wafflestudio.snutt.router.docs
22

33
import com.wafflestudio.snutt.common.dto.OkResponse
4-
import com.wafflestudio.snutt.diary.dto.DiaryActivityTypeDto
4+
import com.wafflestudio.snutt.diary.dto.DiaryActivityDto
55
import com.wafflestudio.snutt.diary.dto.DiaryQuestionDto
66
import com.wafflestudio.snutt.diary.dto.DiarySubmissionSummaryDto
77
import com.wafflestudio.snutt.diary.dto.request.DiaryQuestionnaireRequestDto
@@ -68,7 +68,7 @@ import org.springframework.web.bind.annotation.RequestMethod
6868
responses = [
6969
ApiResponse(
7070
responseCode = "200",
71-
content = [Content(array = ArraySchema(schema = Schema(implementation = DiaryActivityTypeDto::class)))],
71+
content = [Content(array = ArraySchema(schema = Schema(implementation = DiaryActivityDto::class)))],
7272
),
7373
],
7474
),

core/src/main/kotlin/common/exception/ErrorType.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ enum class ErrorType(
7777
FRIEND_LINK_NOT_FOUND(HttpStatus.NOT_FOUND, 40409, "친구 링크가 유효하지 않습니다", "친구 링크가 유효하지 않습니다"),
7878
SOCIAL_PROVIDER_NOT_ATTACHED(HttpStatus.NOT_FOUND, 40410, "소셜 계정이 연동되지 않았습니다", "소셜 계정이 연동되지 않았습니다"),
7979
DIARY_QUESTION_NOT_FOUND(HttpStatus.NOT_FOUND, 40411, "강의 일기장 질문이 유효하지 않습니다", "강의 일기장 질문이 유효하지 않습니다"),
80-
DIARY_ACTIVITY_TYPE_NOT_FOUND(HttpStatus.NOT_FOUND, 40412, "강의 일기장 오늘 한 일이 유효하지 않습니다", "강의 일기장 오늘 한 일이 유효하지 않습니다"),
80+
DIARY_ACTIVITY_NOT_FOUND(HttpStatus.NOT_FOUND, 40412, "강의 일기장 오늘 한 일이 유효하지 않습니다", "강의 일기장 오늘 한 일이 유효하지 않습니다"),
8181

8282
DUPLICATE_VACANCY_NOTIFICATION(HttpStatus.CONFLICT, 40900, "빈자리 알림 중복", "이미 빈자리 알림을 받고 있는 강좌입니다"),
8383
DUPLICATE_EMAIL(HttpStatus.CONFLICT, 40901, "이미 사용 중인 이메일입니다", "이미 사용 중인 이메일입니다"),

core/src/main/kotlin/common/exception/SnuttException.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ object SocialProviderNotAttachedException : SnuttException(ErrorType.SOCIAL_PROV
131131

132132
object DiaryQuestionNotFoundException : SnuttException(ErrorType.DIARY_QUESTION_NOT_FOUND)
133133

134-
object DiaryActivityTypeNotFoundException : SnuttException(ErrorType.DIARY_ACTIVITY_TYPE_NOT_FOUND)
134+
object DiaryActivityNotFoundException : SnuttException(ErrorType.DIARY_ACTIVITY_NOT_FOUND)
135135

136136
object UserNotFoundByNicknameException : SnuttException(ErrorType.USER_NOT_FOUND_BY_NICKNAME)
137137

core/src/main/kotlin/diary/data/DiarySubmission.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,8 @@ data class DiarySubmission(
1818
@Field(targetType = FieldType.OBJECT_ID)
1919
val userId: String,
2020
@Field(targetType = FieldType.OBJECT_ID)
21-
val activityTypeIds: List<String>,
22-
@Field(targetType = FieldType.OBJECT_ID)
23-
val questionIds: List<String>,
24-
val answerIndexes: List<Int>,
21+
val activityIds: List<String>,
22+
val questionAnswers: List<QuestionAnswer>,
2523
@Field(targetType = FieldType.OBJECT_ID)
2624
val lectureId: String,
2725
val courseTitle: String,
@@ -30,3 +28,8 @@ data class DiarySubmission(
3028
val year: Int,
3129
val semester: Semester,
3230
)
31+
32+
data class QuestionAnswer(
33+
val questionId: String,
34+
val answerIndex: Int,
35+
)

core/src/main/kotlin/diary/dto/DiaryActivityTypeDto.kt renamed to core/src/main/kotlin/diary/dto/DiaryActivityDto.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ package com.wafflestudio.snutt.diary.dto
22

33
import com.wafflestudio.snutt.diary.data.DiaryActivity
44

5-
data class DiaryActivityTypeDto(
5+
data class DiaryActivityDto(
66
val id: String,
77
val name: String,
88
)
99

10-
fun DiaryActivityTypeDto(diaryActivity: DiaryActivity) =
11-
DiaryActivityTypeDto(
10+
fun DiaryActivityDto(diaryActivity: DiaryActivity) =
11+
DiaryActivityDto(
1212
id = diaryActivity.id!!,
1313
name = diaryActivity.name,
1414
)
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package com.wafflestudio.snutt.diary.dto.request
22

3+
import com.wafflestudio.snutt.diary.data.QuestionAnswer
4+
35
data class DiarySubmissionRequestDto(
46
val lectureId: String,
57
val activities: List<String>,
6-
val questionIds: List<String>,
7-
val answerIndexes: List<Int>,
8+
val questionAnswers: List<QuestionAnswer>,
89
val comment: String,
910
)

core/src/main/kotlin/diary/repository/DiaryQuestionRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.wafflestudio.snutt.diary.data.DiaryQuestion
55
import org.springframework.data.repository.kotlin.CoroutineCrudRepository
66

77
interface DiaryQuestionRepository : CoroutineCrudRepository<DiaryQuestion, String> {
8-
suspend fun findByTargetActivitiesContainsAndActiveTrue(activityTypes: List<DiaryActivity>): List<DiaryQuestion>
8+
suspend fun findByTargetActivitiesContainsAndActiveTrue(activities: List<DiaryActivity>): List<DiaryQuestion>
99

1010
suspend fun findAllByActiveTrue(): List<DiaryQuestion>
1111

core/src/main/kotlin/diary/service/DiaryService.kt

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.wafflestudio.snutt.diary.service
22

33
import com.wafflestudio.snutt.common.enum.Semester
4-
import com.wafflestudio.snutt.common.exception.DiaryActivityTypeNotFoundException
4+
import com.wafflestudio.snutt.common.exception.DiaryActivityNotFoundException
55
import com.wafflestudio.snutt.common.exception.DiaryQuestionNotFoundException
66
import com.wafflestudio.snutt.diary.data.DiaryActivity
77
import com.wafflestudio.snutt.diary.data.DiaryQuestion
@@ -68,8 +68,7 @@ class DiaryServiceImpl(
6868
val answeredQuestionIds =
6969
diarySubmissionRepository
7070
.findAllByUserIdAndLectureIdOrderByCreatedAt(userId, lectureId)
71-
.flatMap { it.questionIds }
72-
.toSet()
71+
.flatMap { submission -> submission.questionAnswers.map { it.questionId } }
7372

7473
return questions
7574
.filterNot { question -> question.id in answeredQuestionIds }
@@ -89,22 +88,21 @@ class DiaryServiceImpl(
8988
) {
9089
val lecture = lectureService.getByIdOrNull(request.lectureId)!!
9190
val activities = diaryActivityRepository.findByNameIn(request.activities).toList()
92-
if (diaryQuestionRepository.countByIdIn(request.questionIds) != request.questionIds.size) {
91+
val questionIds = request.questionAnswers.map { it.questionId }
92+
if (diaryQuestionRepository.countByIdIn(questionIds) != questionIds.size) {
9393
throw DiaryQuestionNotFoundException
9494
}
95-
if (activities.size < request.activities.size) {
96-
throw DiaryActivityTypeNotFoundException
95+
if (activities.size != request.activities.size) {
96+
throw DiaryActivityNotFoundException
9797
}
98-
9998
val submission =
10099
DiarySubmission(
101100
userId = userId,
102101
comment = request.comment,
103102
lectureId = request.lectureId,
104103
courseTitle = lecture.courseTitle,
105-
answerIndexes = request.answerIndexes,
106-
questionIds = request.questionIds,
107-
activityTypeIds = activities.map { it.id!! },
104+
questionAnswers = request.questionAnswers,
105+
activityIds = activities.map { it.id!! },
108106
year = lecture.year,
109107
semester = lecture.semester,
110108
)
@@ -125,31 +123,31 @@ class DiaryServiceImpl(
125123
override suspend fun getSubmissionIdShortQuestionRepliesMap(
126124
submissions: List<DiarySubmission>,
127125
): Map<String, List<DiaryShortQuestionReply>> {
128-
val questions = diaryQuestionRepository.findAllByIdIn(submissions.flatMap { it.questionIds }).associateBy { it.id }
126+
val questionIds = submissions.flatMap { submission -> submission.questionAnswers.map { it.questionId } }
127+
val questionsIdMap = diaryQuestionRepository.findAllByIdIn(questionIds).associateBy { it.id }
129128
return submissions.associate { submission ->
130129
val shortQuestionReplies =
131-
submission.questionIds.mapIndexedNotNull { index, questionId ->
132-
questions[questionId]?.let { question ->
133-
DiaryShortQuestionReply(
134-
question = question.shortQuestion,
135-
answer = question.shortAnswers[submission.answerIndexes[index]],
136-
)
137-
}
130+
submission.questionAnswers.map { (questionId, answerIndex) ->
131+
val question = questionsIdMap[questionId]!!
132+
DiaryShortQuestionReply(
133+
question = question.shortQuestion,
134+
answer = question.shortAnswers[answerIndex],
135+
)
138136
}
139137
submission.id!! to shortQuestionReplies
140138
}
141139
}
142140

143141
override suspend fun addOrEnableActivity(name: String) {
144-
val activityType = diaryActivityRepository.findByName(name) ?: DiaryActivity(name = name, active = true)
145-
activityType.active = true
146-
diaryActivityRepository.save(activityType)
142+
val activity = diaryActivityRepository.findByName(name) ?: DiaryActivity(name = name, active = true)
143+
activity.active = true
144+
diaryActivityRepository.save(activity)
147145
}
148146

149147
override suspend fun disableActivity(name: String) {
150-
val activityType = diaryActivityRepository.findByName(name) ?: return
151-
activityType.active = false
152-
diaryActivityRepository.save(activityType)
148+
val activity = diaryActivityRepository.findByName(name) ?: return
149+
activity.active = false
150+
diaryActivityRepository.save(activity)
153151
}
154152

155153
override suspend fun addQuestion(request: DiaryAddQuestionRequestDto) {

0 commit comments

Comments
 (0)