Skip to content

Commit 53ac66a

Browse files
committed
spring event 적용
1 parent d5d21a2 commit 53ac66a

3 files changed

Lines changed: 28 additions & 17 deletions

File tree

core/src/main/kotlin/timetablelecturereminder/service/TimetableLectureReminderService.kt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ import com.wafflestudio.snutt.common.util.SemesterUtils
77
import com.wafflestudio.snutt.timetablelecturereminder.data.TimetableLectureReminder
88
import com.wafflestudio.snutt.timetablelecturereminder.repository.TimetableLectureReminderRepository
99
import com.wafflestudio.snutt.timetables.data.Timetable
10-
import com.wafflestudio.snutt.timetables.data.TimetableLecture
10+
import com.wafflestudio.snutt.timetables.event.data.TimetableLectureModifiedEvent
1111
import com.wafflestudio.snutt.timetables.repository.TimetableRepository
12+
import org.springframework.context.event.EventListener
1213
import org.springframework.stereotype.Service
1314
import java.time.Instant
1415

@@ -27,8 +28,6 @@ interface TimetableLectureReminderService {
2728
): TimetableLectureReminder
2829

2930
suspend fun deleteReminder(timetableLectureId: String)
30-
31-
suspend fun updateScheduleIfNeeded(modifiedTimetableLecture: TimetableLecture)
3231
}
3332

3433
@Service
@@ -86,7 +85,16 @@ class TimetableLectureReminderServiceImpl(
8685
timetableLectureReminderRepository.delete(reminder)
8786
}
8887

89-
override suspend fun updateScheduleIfNeeded(modifiedTimetableLecture: TimetableLecture) {
88+
private fun validateTimetableSemester(timetable: Timetable) {
89+
val (activeYear, activeSemester) = SemesterUtils.getCurrentOrNextYearAndSemester(Instant.now())
90+
if (timetable.year < activeYear || (timetable.year == activeYear && timetable.semester < activeSemester)) {
91+
throw PastSemesterException
92+
}
93+
}
94+
95+
@EventListener
96+
suspend fun handleTimetableLectureModifiedEvent(event: TimetableLectureModifiedEvent) {
97+
val modifiedTimetableLecture = event.timetableLecture
9098
val reminder =
9199
timetableLectureReminderRepository.findByTimetableLectureId(modifiedTimetableLecture.id)
92100
?: return
@@ -104,11 +112,4 @@ class TimetableLectureReminderServiceImpl(
104112
}
105113
timetableLectureReminderRepository.save(reminder.copy(schedules = newSchedules))
106114
}
107-
108-
private fun validateTimetableSemester(timetable: Timetable) {
109-
val (activeYear, activeSemester) = SemesterUtils.getCurrentOrNextYearAndSemester(Instant.now())
110-
if (timetable.year < activeYear || (timetable.year == activeYear && timetable.semester < activeSemester)) {
111-
throw PastSemesterException
112-
}
113-
}
114115
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.wafflestudio.snutt.timetables.event.data
2+
3+
import com.wafflestudio.snutt.timetables.data.TimetableLecture
4+
5+
data class TimetableLectureModifiedEvent(
6+
val timetableLecture: TimetableLecture,
7+
)

core/src/main/kotlin/timetables/service/TimetableLectureService.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@ import com.wafflestudio.snutt.common.exception.WrongSemesterException
1010
import com.wafflestudio.snutt.lectures.repository.LectureRepository
1111
import com.wafflestudio.snutt.lectures.utils.ClassTimeUtils
1212
import com.wafflestudio.snutt.theme.service.TimetableThemeService
13-
import com.wafflestudio.snutt.timetablelecturereminder.service.TimetableLectureReminderService
1413
import com.wafflestudio.snutt.timetables.data.Timetable
1514
import com.wafflestudio.snutt.timetables.data.TimetableLecture
1615
import com.wafflestudio.snutt.timetables.dto.request.CustomTimetableLectureAddLegacyRequestDto
1716
import com.wafflestudio.snutt.timetables.dto.request.TimetableLectureModifyLegacyRequestDto
17+
import com.wafflestudio.snutt.timetables.event.data.TimetableLectureModifiedEvent
1818
import com.wafflestudio.snutt.timetables.repository.TimetableRepository
19+
import org.springframework.context.ApplicationEventPublisher
1920
import org.springframework.stereotype.Service
2021

2122
interface TimetableLectureService {
@@ -58,9 +59,9 @@ interface TimetableLectureService {
5859
@Service
5960
class TimetableLectureServiceImpl(
6061
private val timetableThemeService: TimetableThemeService,
61-
private val timetableLectureReminderService: TimetableLectureReminderService,
6262
private val timetableRepository: TimetableRepository,
6363
private val lectureRepository: LectureRepository,
64+
private val eventPublisher: ApplicationEventPublisher,
6465
) : TimetableLectureService {
6566
override suspend fun addLecture(
6667
userId: String,
@@ -116,8 +117,9 @@ class TimetableLectureServiceImpl(
116117
categoryPre2025 = originalLecture.categoryPre2025
117118
}
118119
resolveTimeConflict(timetable, timetableLecture, isForced)
119-
timetableLectureReminderService.updateScheduleIfNeeded(timetableLecture)
120-
return timetableRepository.updateTimetableLecture(timetableId, timetableLecture)
120+
val updatedTimetable = timetableRepository.updateTimetableLecture(timetableId, timetableLecture)
121+
eventPublisher.publishEvent(TimetableLectureModifiedEvent(timetableLecture))
122+
return updatedTimetable
121123
}
122124

123125
override suspend fun modifyTimetableLecture(
@@ -147,8 +149,9 @@ class TimetableLectureServiceImpl(
147149
categoryPre2025 = modifyTimetableLectureRequestDto.categoryPre2025 ?: categoryPre2025
148150
}
149151
resolveTimeConflict(timetable, timetableLecture, isForced)
150-
timetableLectureReminderService.updateScheduleIfNeeded(timetableLecture)
151-
return timetableRepository.updateTimetableLecture(timetableId, timetableLecture)
152+
val updatedTimetable = timetableRepository.updateTimetableLecture(timetableId, timetableLecture)
153+
eventPublisher.publishEvent(TimetableLectureModifiedEvent(timetableLecture))
154+
return updatedTimetable
152155
}
153156

154157
override suspend fun deleteTimetableLecture(

0 commit comments

Comments
 (0)