Skip to content

Commit

Permalink
Merge pull request #110 from wafflestudio/develop
Browse files Browse the repository at this point in the history
Release
  • Loading branch information
Hank-Choi authored Jul 2, 2024
2 parents c4915ab + 0ef5796 commit 892ed15
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class SnuttUserFilter : OncePerRequestFilter() {

override fun shouldNotFilter(request: HttpServletRequest): Boolean {
val path = request.requestURI
val excludePath = listOf("/v1/lectures/snutt-summary")
val excludePath = listOf("/v1/lectures/snutt-summary", "/v1/lectures/ids")
return excludePath.contains(path)
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.wafflestudio.snuttev.core.domain.lecture.dto

import com.fasterxml.jackson.databind.PropertyNamingStrategies
import com.fasterxml.jackson.databind.annotation.JsonNaming
import com.wafflestudio.snuttev.core.common.type.LectureClassification
import com.wafflestudio.snuttev.core.domain.evaluation.dto.SemesterLectureDto

Expand Down Expand Up @@ -33,6 +35,7 @@ data class LectureAndSemesterLecturesResponse(
val semesterLectures: List<SemesterLectureDto>,
)

@JsonNaming(PropertyNamingStrategies.LowerCamelCaseStrategy::class)
data class LectureIdResponse(
// FIXME: evLectureId로 대체되므로 삭제 (evLectureId 생성: 2024-04-14)
val id: Long,
Expand All @@ -54,8 +57,10 @@ data class LectureTakenByUserResponse(
val takenSemester: Int,
)

@JsonNaming(PropertyNamingStrategies.LowerCamelCaseStrategy::class)
data class EvLectureSummaryForSnutt(
val snuttId: String,
val evLectureId: Long,
val avgRating: Double?,
val evaluationCount: Long,
)
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,5 @@ data class LectureEvaluationSummaryDao(
data class LectureRatingDao(
val id: Long,
val avgRating: Double?,
val count: Long,
)
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ interface LectureRepository : JpaRepository<Lecture, Long?>, LectureRepositoryCu
@Query(
"""
select new com.wafflestudio.snuttev.core.domain.lecture.model.LectureRatingDao(
sl.lecture.id, avg(le.rating)
sl.lecture.id, avg(le.rating), count(le.id)
) from LectureEvaluation le right join le.semesterLecture sl where sl.lecture.id in :ids and le.isHidden = false group by sl.lecture.id
""",
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import org.springframework.data.jpa.repository.Query

interface SnuttLectureIdMapRepository : JpaRepository<SnuttLectureIdMap, Long> {
@Query("SELECT ttm FROM SnuttLectureIdMap ttm JOIN FETCH ttm.semesterLecture WHERE ttm.snuttId IN :snuttIds")
fun findAllWithSemesterLectureBySnuttIds(snuttIds: List<String>): List<SnuttLectureIdMap>

fun findAllBySnuttIdIn(snuttIds: List<String>): List<SnuttLectureIdMap>
fun findAllWithSemesterLectureBySnuttIdIn(snuttIds: List<String>): List<SnuttLectureIdMap>
fun findBySnuttId(snuttId: String): SnuttLectureIdMap?
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class LectureService(
.ifEmpty { throw LectureNotFoundException }
.let { semesterLectures ->
val (year, nextSemester) = semesterUtils.getYearAndSemesterOfNextSemester()
semesterLectures.dropWhile { it.year == year && it.semester == nextSemester.value }
semesterLectures.filterNot { it.year == year && it.semester == nextSemester.value }
}

val firstSemesterLectureWithLecture = semesterLecturesWithLecture.first()
Expand Down Expand Up @@ -127,21 +127,21 @@ class LectureService(
}

fun getLectureIdsFromSnuttIds(snuttIds: List<String>): List<LectureIdResponse> {
val snuttLectureIdMaps = snuttLectureIdMapRepository.findAllBySnuttIdIn(snuttIds)
val snuttLectureIdMaps = snuttLectureIdMapRepository.findAllWithSemesterLectureBySnuttIdIn(snuttIds)
return snuttLectureIdMaps.map { LectureIdResponse(it.semesterLecture.lecture.id!!, it.snuttId) }
}

fun getEvLectureSummaryForSnutt(semesterLectureSnuttIds: List<String>): List<EvLectureSummaryForSnutt> {
val snuttIdLectureIdMap = snuttLectureIdMapRepository.findAllWithSemesterLectureBySnuttIds(semesterLectureSnuttIds)
.associate { it.semesterLecture.lecture.id!! to it.snuttId }
val lectureIds = snuttIdLectureIdMap.keys
val ratingMap = lectureRepository.findAllRatingsByLectureIds(lectureIds)
.associate { it.id to it.avgRating }
return lectureIds.map {
val snuttLectureIdMaps = snuttLectureIdMapRepository.findAllWithSemesterLectureBySnuttIdIn(semesterLectureSnuttIds)
val lectureIds = snuttLectureIdMaps.map { it.semesterLecture.lecture.id!! }
val evMap = lectureRepository.findAllRatingsByLectureIds(lectureIds).associateBy { it.id }
return snuttLectureIdMaps.map {
val evLectureId = it.semesterLecture.lecture.id!!
EvLectureSummaryForSnutt(
snuttId = snuttIdLectureIdMap[it]!!,
evLectureId = it,
avgRating = ratingMap[it],
snuttId = it.snuttId,
evLectureId = evLectureId,
avgRating = evMap[evLectureId]?.avgRating,
evaluationCount = evMap[evLectureId]?.count ?: 0L,
)
}
}
Expand Down

0 comments on commit 892ed15

Please sign in to comment.