Skip to content

Commit

Permalink
Merge pull request #358 from Team-Ampersand/music-init
Browse files Browse the repository at this point in the history
음악 데이터 초기화 스케쥴링
  • Loading branch information
esperar committed Jul 5, 2024
2 parents 4a10ff8 + 2619be1 commit 981b1e2
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.dotori.v2.domain.member.service.impl

import com.dotori.v2.domain.member.domain.entity.Member
import com.dotori.v2.domain.member.service.ProfileImageService
import com.dotori.v2.global.util.ProfileImageService
import com.dotori.v2.domain.member.service.UpdateProfileImageService
import com.dotori.v2.global.util.UserUtil
import org.springframework.stereotype.Service
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.dotori.v2.domain.member.service.impl

import com.dotori.v2.domain.member.domain.entity.Member
import com.dotori.v2.domain.member.service.ProfileImageService
import com.dotori.v2.global.util.ProfileImageService
import com.dotori.v2.domain.member.service.UploadProfileImageService
import com.dotori.v2.global.util.UserUtil
import org.springframework.stereotype.Service
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package com.dotori.v2.domain.music.domain.repository

import com.dotori.v2.domain.member.domain.entity.Member
import com.dotori.v2.domain.member.enums.MusicStatus
import com.dotori.v2.domain.music.domain.entity.Music
import javax.persistence.LockModeType
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.jpa.repository.Lock
import org.springframework.data.jpa.repository.Modifying
import org.springframework.data.jpa.repository.Query
import org.springframework.data.repository.query.Param
import java.time.LocalDate
import java.time.LocalDateTime

interface MusicRepository : JpaRepository<Music, Long> {
@Modifying
Expand All @@ -19,4 +16,6 @@ interface MusicRepository : JpaRepository<Music, Long> {
@Query(value = "select * from music where created_date like :date%", nativeQuery = true)
fun findAllByCreatedDate(@Param("date") date: LocalDate): List<Music>

fun deleteAllByCreatedDateBefore(date: LocalDateTime)

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,28 @@ import org.springframework.scheduling.annotation.Scheduled
import org.springframework.stereotype.Component
import org.springframework.transaction.annotation.Transactional
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.temporal.ChronoUnit

@Component
@Transactional
class MusicSchedule(
private val musicRepository: MusicRepository,
private val redisTemplate: RedisTemplate<String, Any>
private val redisCacheService: RedisCacheService
) {
private val log = LoggerFactory.getLogger(this.javaClass.simpleName)

@Scheduled(cron = "0 0 0 ? * MON-FRI")
fun weekdayMusicStatusReset() {
musicRepository.updateMusicStatusMemberByMember()
val keys = redisTemplate.keys("musicList:*")
if(keys.isNotEmpty()) {
redisTemplate.delete(keys)
}
log.info("Student Music Status Updated At {}", LocalDate.now())
}

@Scheduled(cron = "0 0 0 1 *")
fun initMusic() {
val localDateTime = LocalDateTime.now().minus(2,ChronoUnit.MONTHS)
musicRepository.deleteAllByCreatedDateBefore(localDateTime)
redisCacheService.initCache("musicList:*")
log.info("delete music data schedule")
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.dotori.v2.domain.member.enums.SelfStudyStatus
import com.dotori.v2.domain.student.presentation.data.res.FindAllStudentResDto
import org.springframework.data.redis.core.RedisTemplate
import org.springframework.stereotype.Service
import java.time.LocalDate

@Service
class RedisCacheService(
Expand All @@ -26,6 +27,13 @@ class RedisCacheService(
updateMemberCache(memberId) { it.copy(selfStudyStatus = selfStudyStatus) }
}

fun initCache(pattern: String) {
val keys = redisTemplate.keys(pattern)
if(keys.isNotEmpty()) {
redisTemplate.delete(pattern)
}
}

private fun updateMemberCache(memberId: Long,update: (FindAllStudentResDto) -> FindAllStudentResDto) {
val cacheKey = "memberList"
val cachedData = getFromCache(cacheKey) as? List<FindAllStudentResDto>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dotori.v2.domain.member.service
package com.dotori.v2.global.util

import com.dotori.v2.domain.member.domain.entity.Member
import com.dotori.v2.domain.member.exception.NotAcceptImgExtensionException
Expand Down

0 comments on commit 981b1e2

Please sign in to comment.