Skip to content

Commit 2178b79

Browse files
committed
feat: COMPLETED 영상 일정 조회 캐싱 적용 (데코레이터 패턴)
1 parent af43145 commit 2178b79

3 files changed

Lines changed: 40 additions & 2 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.linktrip.output.cache.caffeine.adapter
2+
3+
import com.linktrip.application.domain.video.TravelItineraryItem
4+
import com.linktrip.application.port.output.persistence.TravelItineraryItemPersistencePort
5+
import com.linktrip.output.cache.caffeine.config.CacheConfig
6+
import org.springframework.beans.factory.annotation.Qualifier
7+
import org.springframework.cache.annotation.Cacheable
8+
import org.springframework.context.annotation.Primary
9+
import org.springframework.stereotype.Component
10+
11+
@Primary
12+
@Component
13+
class TravelItineraryItemCachingAdapter(
14+
@param:Qualifier("travelItineraryItemDbAdapter")
15+
private val delegate: TravelItineraryItemPersistencePort,
16+
) : TravelItineraryItemPersistencePort {
17+
override fun saveAll(items: List<TravelItineraryItem>) {
18+
delegate.saveAll(items)
19+
}
20+
21+
override fun findByVideoAnalysisTaskId(videoAnalysisTaskId: String): List<TravelItineraryItem> =
22+
delegate.findByVideoAnalysisTaskId(videoAnalysisTaskId)
23+
24+
@Cacheable(
25+
value = [CacheConfig.VIDEO_SCHEDULE],
26+
key = "#videoAnalysisTaskId",
27+
unless = "#result.isEmpty()",
28+
)
29+
override fun findByVideoAnalysisTaskIdWithPlace(videoAnalysisTaskId: String): List<TravelItineraryItem> =
30+
delegate.findByVideoAnalysisTaskIdWithPlace(videoAnalysisTaskId)
31+
32+
override fun findRetryableItems(videoAnalysisTaskId: String): List<TravelItineraryItem> =
33+
delegate.findRetryableItems(videoAnalysisTaskId)
34+
35+
override fun findVideoAnalysisTaskIdsWithRetryableItems(): List<String> =
36+
delegate.findVideoAnalysisTaskIdsWithRetryableItems()
37+
}

linktrip-output-cache/caffeine/src/main/kotlin/com/linktrip/output/cache/caffeine/config/CacheConfig.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ class CacheConfig {
1919
.expireAfterWrite(CACHE_TTL_HOURS, TimeUnit.HOURS)
2020
.maximumSize(CACHE_MAX_SIZE),
2121
)
22-
setCacheNames(listOf(DISCOVER_VIDEOS, DISCOVER_CHANNELS))
22+
setCacheNames(listOf(DISCOVER_VIDEOS, DISCOVER_CHANNELS, VIDEO_SCHEDULE))
2323
}
2424

2525
companion object {
2626
const val DISCOVER_VIDEOS = "discoverVideos"
2727
const val DISCOVER_CHANNELS = "discoverChannels"
28+
const val VIDEO_SCHEDULE = "videoSchedule"
2829
private const val CACHE_TTL_HOURS = 7L
2930
private const val CACHE_MAX_SIZE = 100L
3031
}

linktrip-output-persistence/mysql/src/main/kotlin/com/linktrip/output/persistence/mysql/adapter/TravelItineraryItemAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.linktrip.output.persistence.mysql.repository.TravelItineraryItemJpaRe
77
import com.linktrip.output.persistence.mysql.repository.TravelItineraryItemQuerydslRepository
88
import org.springframework.stereotype.Component
99

10-
@Component
10+
@Component("travelItineraryItemDbAdapter")
1111
class TravelItineraryItemAdapter(
1212
private val jpaRepository: TravelItineraryItemJpaRepository,
1313
private val querydslRepository: TravelItineraryItemQuerydslRepository,

0 commit comments

Comments
 (0)