rename
This commit is contained in:
@@ -71,7 +71,7 @@ class RedisCache(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend inline fun <reified T> exec(
|
suspend inline fun <reified T> transact(
|
||||||
key: String,
|
key: String,
|
||||||
ttl: Duration? = null,
|
ttl: Duration? = null,
|
||||||
createNew: suspend () -> T
|
createNew: suspend () -> T
|
||||||
|
|||||||
+3
-3
@@ -16,7 +16,7 @@ class CacheVideoApi(
|
|||||||
private val ttl = 3.days
|
private val ttl = 3.days
|
||||||
|
|
||||||
override suspend fun fetchNewVideos(query: String?): VideosResponse {
|
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 {
|
wrapper.fetchNewVideos(query).let {
|
||||||
if (query != null) {
|
if (query != null) {
|
||||||
it.copy(items = filter.filter(it.items, query))
|
it.copy(items = filter.filter(it.items, query))
|
||||||
@@ -28,11 +28,11 @@ class CacheVideoApi(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun fetchDetails(id: Long): VideoDetails {
|
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 {
|
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)
|
wrapper.fetchVideoLinks(id, seasonId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -38,7 +38,7 @@ class CacheRecentlyWatchedRepository(
|
|||||||
): Flow<List<RecentlyWatchedInfo>> {
|
): Flow<List<RecentlyWatchedInfo>> {
|
||||||
return flow {
|
return flow {
|
||||||
emit(
|
emit(
|
||||||
redis.exec(
|
redis.transact(
|
||||||
"$prefix:$movieId:$seasonId",
|
"$prefix:$movieId:$seasonId",
|
||||||
7.days
|
7.days
|
||||||
) { wrapper.queryRecentlyWatched(movieId, seasonId).first() }
|
) { wrapper.queryRecentlyWatched(movieId, seasonId).first() }
|
||||||
@@ -47,7 +47,7 @@ class CacheRecentlyWatchedRepository(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun getAllRecentlyWatched(): List<RecentlyWatchedInfo> {
|
override suspend fun getAllRecentlyWatched(): List<RecentlyWatchedInfo> {
|
||||||
return redis.exec(
|
return redis.transact(
|
||||||
prefix,
|
prefix,
|
||||||
7.days
|
7.days
|
||||||
) { wrapper.getAllRecentlyWatched() }
|
) { wrapper.getAllRecentlyWatched() }
|
||||||
|
|||||||
+6
-9
@@ -10,38 +10,35 @@ import kotlin.time.Duration.Companion.days
|
|||||||
|
|
||||||
class CacheSavedMovieRepository(
|
class CacheSavedMovieRepository(
|
||||||
private val wrapper: SavedMovieRepository,
|
private val wrapper: SavedMovieRepository,
|
||||||
private val redisCache: RedisCache,
|
private val redis: RedisCache,
|
||||||
userId: Long
|
userId: Long
|
||||||
) : SavedMovieRepository {
|
) : SavedMovieRepository {
|
||||||
private val ttl = 7.days
|
private val ttl = 7.days
|
||||||
private val prefix = "saved-movie:$userId"
|
private val prefix = "saved-movie:$userId"
|
||||||
|
|
||||||
override suspend fun save(details: VideoDetails) {
|
override suspend fun save(details: VideoDetails) {
|
||||||
obtainKeys(details.id).forEach { redisCache.delete(it) }
|
obtainKeys(details.id).forEach { redis.delete(it) }
|
||||||
wrapper.save(details)
|
wrapper.save(details)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun obtainKeys(id: Long): Set<String> {
|
private fun obtainKeys(id: Long): Set<String> {
|
||||||
return setOf(
|
return setOf("$prefix:$id", prefix)
|
||||||
"$prefix:$id",
|
|
||||||
prefix
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getAll(): Flow<List<VideoDetails>> {
|
override fun getAll(): Flow<List<VideoDetails>> {
|
||||||
return 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<Boolean> {
|
override fun isSaved(id: Long): Flow<Boolean> {
|
||||||
return 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) {
|
override suspend fun remove(id: Long) {
|
||||||
obtainKeys(id).forEach { redisCache.delete(it) }
|
obtainKeys(id).forEach { redis.delete(it) }
|
||||||
wrapper.remove(id)
|
wrapper.remove(id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user