diff --git a/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/RedisCache.kt b/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/RedisCache.kt index 152bdd3..16c1184 100644 --- a/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/RedisCache.kt +++ b/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/RedisCache.kt @@ -71,7 +71,7 @@ class RedisCache( } } - suspend inline fun exec( + suspend inline fun transact( key: String, ttl: Duration? = null, createNew: suspend () -> T diff --git a/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/http/CacheVideoApi.kt b/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/http/CacheVideoApi.kt index 82dde4e..60366d6 100644 --- a/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/http/CacheVideoApi.kt +++ b/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/http/CacheVideoApi.kt @@ -16,7 +16,7 @@ class CacheVideoApi( private val ttl = 3.days override suspend fun fetchNewVideos(query: String?): VideosResponse { - return redis.exec("$PREFIX:videos:$query", ttl) { + return redis.transact("$PREFIX:videos:$query", ttl) { wrapper.fetchNewVideos(query).let { if (query != null) { it.copy(items = filter.filter(it.items, query)) @@ -28,11 +28,11 @@ class CacheVideoApi( } override suspend fun fetchDetails(id: Long): VideoDetails { - return redis.exec("$PREFIX:details:$id", ttl) { wrapper.fetchDetails(id) } + return redis.transact("$PREFIX:details:$id", ttl) { wrapper.fetchDetails(id) } } override suspend fun fetchVideoLinks(id: Long, seasonId: Long?): VideoLinksResponse { - return redis.exec("$PREFIX:links:$id:$seasonId", ttl) { + return redis.transact("$PREFIX:links:$id:$seasonId", ttl) { wrapper.fetchVideoLinks(id, seasonId) } } diff --git a/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/recent/CacheRecentlyWatchedRepository.kt b/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/recent/CacheRecentlyWatchedRepository.kt index f69d8b3..94ad566 100644 --- a/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/recent/CacheRecentlyWatchedRepository.kt +++ b/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/recent/CacheRecentlyWatchedRepository.kt @@ -38,7 +38,7 @@ class CacheRecentlyWatchedRepository( ): Flow> { return flow { emit( - redis.exec( + redis.transact( "$prefix:$movieId:$seasonId", 7.days ) { wrapper.queryRecentlyWatched(movieId, seasonId).first() } @@ -47,7 +47,7 @@ class CacheRecentlyWatchedRepository( } override suspend fun getAllRecentlyWatched(): List { - return redis.exec( + return redis.transact( prefix, 7.days ) { wrapper.getAllRecentlyWatched() } diff --git a/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/saved/CacheSavedMovieRepository.kt b/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/saved/CacheSavedMovieRepository.kt index ad72422..d4f1119 100644 --- a/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/saved/CacheSavedMovieRepository.kt +++ b/apps/vbox/backend/src/main/kotlin/ru/shadowsparky/vbox/backend/data/saved/CacheSavedMovieRepository.kt @@ -10,38 +10,35 @@ import kotlin.time.Duration.Companion.days class CacheSavedMovieRepository( private val wrapper: SavedMovieRepository, - private val redisCache: RedisCache, + private val redis: RedisCache, userId: Long ) : SavedMovieRepository { private val ttl = 7.days private val prefix = "saved-movie:$userId" override suspend fun save(details: VideoDetails) { - obtainKeys(details.id).forEach { redisCache.delete(it) } + obtainKeys(details.id).forEach { redis.delete(it) } wrapper.save(details) } private fun obtainKeys(id: Long): Set { - return setOf( - "$prefix:$id", - prefix - ) + return setOf("$prefix:$id", prefix) } override fun getAll(): Flow> { return flow { - emit(redisCache.exec(prefix, ttl) { wrapper.getAll().first() }) + emit(redis.transact(prefix, ttl) { wrapper.getAll().first() }) } } override fun isSaved(id: Long): Flow { return flow { - emit(redisCache.exec("$prefix:$id") { wrapper.isSaved(id).first() }) + emit(redis.transact("$prefix:$id") { wrapper.isSaved(id).first() }) } } override suspend fun remove(id: Long) { - obtainKeys(id).forEach { redisCache.delete(it) } + obtainKeys(id).forEach { redis.delete(it) } wrapper.remove(id) } }