Skip to content

RedisRepository와 JpaRepository를 확실히 분리합니다 #393

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Jul 8, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ object FileUtil {

fun String.isHWPCorrectExtension() =
when (this.lowercase()) {
"hwp", "hwpx" -> true
"hwp", "hwpx", "pdf" -> true
else -> false
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class QueryStudentAuthenticationFormDetailUseCase(
val markingBoard = markingBoardService.getMarkingBoardById(id = markingBoardId)

// 채점 전 상태인 학생 폼을 조회할시 채점 중으로 상태 변경
if(markingBoard.markingBoardType == MarkingBoardType.PENDING_REVIEW) {
if (markingBoard.markingBoardType == MarkingBoardType.PENDING_REVIEW) {
markingBoardService.save(
markingBoard.copy(
id = markingBoard.id,
Expand Down Expand Up @@ -101,18 +101,19 @@ class QueryStudentAuthenticationFormDetailUseCase(
selectorSectionValues: List<SelectorSectionValue>,
studentId: UUID
): List<StudentAuthenticationFormResponseData.FieldSet> {
return authenticationFieldService.getAuthenticationFieldsByGroupId(groupId)
//groupId로 필드 데이터 조회 후 필드 Id와 studentId로 user가 입력한 데이터 조회
val userFormValues = authenticationFieldService.getAuthenticationFieldsByGroupId(groupId)
.flatMap { authenticationField ->
val userFormValues =
userFormValueService.getUserFormValueListByFieldIdAndStudentId(authenticationField.id, studentId)
val setIds = userFormValues.map { it.setId }.distinct()
setIds.map { setId ->
StudentAuthenticationFormResponseData.FieldSet(
setId = setId,
values = buildFields(userFormValues, setId, selectorSectionValues)
)
}
userFormValueService.getUserFormValueListByFieldIdAndStudentId(authenticationField.id, studentId)
}

// setId별로 그룹화하여 FieldSet 생성
return userFormValues.groupBy { it.setId }.map { (setId, values) ->
StudentAuthenticationFormResponseData.FieldSet(
setId = setId,
values = buildFields(values, setId, selectorSectionValues)
)
}
}

private fun buildFields(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ class FindAllUseCase(
private val securityService: SecurityService
) {
@Transactional
@Cacheable(
value = ["StudentInfoListResponseData"],
key = "#root.target.generateCacheKey(#page, #size)",
cacheManager = "contentCacheManager",
)
// @Cacheable(
// value = ["StudentInfoListResponseData"],
// key = "#root.target.generateCacheKey(#page, #size)",
// cacheManager = "contentCacheManager",
// )
fun execute(page: Int, size: Int, filtersData: FiltersRequestData): StudentInfoListResponseData {
val students = studentService.getStudents()
val techStacks = techStackService.getAllTechStack()
Expand Down
5 changes: 5 additions & 0 deletions sms-infrastructure/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ spring:
host: ${REDIS_HOST}
port: ${REDIS_PORT}

data:
jpa:
repositories:
bootstrap-mode: deferred

servlet:
multipart:
max-file-size: 50MB
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package team.msg.sms.global.config

import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.FilterType
import org.springframework.data.jpa.repository.config.EnableJpaRepositories


@Configuration
@EnableJpaRepositories(
basePackages = [
"team.msg.sms.persistence.authentication.repository",
"team.msg.sms.persistence.certificate.repository",
"team.msg.sms.persistence.file.repository",
"team.msg.sms.persistence.image.repository",
"team.msg.sms.persistence.languagecertificate.repository",
"team.msg.sms.persistence.major.repository",
"team.msg.sms.persistence.prize.repository",
"team.msg.sms.persistence.project.repository",
"team.msg.sms.persistence.region.repository",
"team.msg.sms.persistence.student.repository",
"team.msg.sms.persistence.teacher.repository",
"team.msg.sms.persistence.techstack.repository",
"team.msg.sms.persistence.user.repository",
],
excludeFilters = [ComponentScan.Filter(
type = FilterType.ASPECTJ,
pattern = ["team.msg.sms.persistence.auth.repository.RefreshTokenRepository", "team.msg.sms.persistence.student.redisRepository.*"]
)]
)
class JpaConfig
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,13 @@ import org.springframework.data.redis.repository.configuration.EnableRedisReposi
import java.time.Duration

@Configuration
@EnableRedisRepositories(enableKeyspaceEvents = RedisKeyValueAdapter.EnableKeyspaceEvents.ON_STARTUP)
@EnableRedisRepositories(
enableKeyspaceEvents = RedisKeyValueAdapter.EnableKeyspaceEvents.ON_STARTUP,
basePackages = ["team.msg.sms.persistence.auth.repository", "team.msg.sms.persistence.student.redisRepository"]
)
class RedisConfig(

@Value("\${spring.redis.host}")
private val redisHost: String,

@Value("\${spring.redis.port}")
private val redisPort: Int
@Value("\${spring.redis.host}") private val redisHost: String,
@Value("\${spring.redis.port}") private val redisPort: Int
) {

@Bean
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package team.msg.sms.persistence.auth.repository

import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.repository.CrudRepository
import org.springframework.stereotype.Repository
import team.msg.sms.persistence.auth.entity.RefreshTokenEntity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class UserFormValuePersistenceAdapter(
private val jpaQueryFactory: JPAQueryFactory
) : UserFormValuePort {
override fun queryUserFormValueListByFieldIdAndStudentId(fieldId: UUID, studentId: UUID): List<UserFormValue> {
return userFormValueRepository.findAllByAuthenticationFieldIdAndCreatedBy(fieldId, studentId).map { it.toDomain() }
return userFormValueRepository.findAllByAuthenticationFieldIdAndCreatedByOrderByCreatedAt(fieldId, studentId).map { it.toDomain() }
}
override fun existsUserFormValueBySetIds(setIds: List<UUID>): Boolean {
val qUserFormValue = QUserFormValueJpaEntity.userFormValueJpaEntity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ import java.util.UUID

@Repository
interface UserFormValueRepository : CrudRepository<UserFormValueJpaEntity, UUID> {
fun findAllByAuthenticationFieldIdAndCreatedBy(fieldId: UUID, createdBy: UUID): List<UserFormValueJpaEntity>
fun findAllByAuthenticationFieldIdAndCreatedByOrderByCreatedAt(fieldId: UUID, createdBy: UUID): List<UserFormValueJpaEntity>
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import org.springframework.stereotype.Component
import team.msg.sms.domain.file.model.File
import team.msg.sms.domain.file.model.FileType
import team.msg.sms.domain.file.spi.FilePort
import team.msg.sms.persistence.file.Repository.FileRepository
import team.msg.sms.persistence.file.Repository.FileRepositoryCustom
import team.msg.sms.persistence.file.repository.FileRepository
import team.msg.sms.persistence.file.repository.FileRepositoryCustom
import team.msg.sms.persistence.file.mapper.toDomain
import team.msg.sms.persistence.file.mapper.toEntity
import java.util.*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package team.msg.sms.persistence.file.Repository
package team.msg.sms.persistence.file.repository

import org.springframework.data.repository.CrudRepository
import org.springframework.stereotype.Repository
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package team.msg.sms.persistence.file.Repository
package team.msg.sms.persistence.file.repository

import org.springframework.data.repository.query.Param
import team.msg.sms.persistence.file.entity.FileJpaEntity
import java.util.*

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package team.msg.sms.persistence.file.Repository
package team.msg.sms.persistence.file.repository

import com.querydsl.jpa.impl.JPAQueryFactory
import org.springframework.stereotype.Repository
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import team.msg.sms.domain.student.model.StudentLink
import team.msg.sms.domain.student.spi.StudentLinkPort
import team.msg.sms.persistence.student.mapper.toDomain
import team.msg.sms.persistence.student.mapper.toEntity
import team.msg.sms.persistence.student.repository.StudentJpaRepository
import team.msg.sms.persistence.student.repository.StudentLinkRepository
import team.msg.sms.persistence.student.redisRepository.StudentLinkRepository
import java.util.*

@Component
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package team.msg.sms.persistence.student.repository
package team.msg.sms.persistence.student.redisRepository

import org.springframework.data.repository.CrudRepository
import org.springframework.stereotype.Repository
import team.msg.sms.persistence.student.entity.StudentLinkEntity

@Repository
interface StudentLinkRepository : CrudRepository<StudentLinkEntity, Long> {
fun existsByToken(token: String): Boolean
fun findByToken(token: String): StudentLinkEntity?
fun existsByToken(token: String): Boolean
fun findByToken(token: String): StudentLinkEntity?
}
Loading