Skip to content
This repository was archived by the owner on Dec 27, 2024. It is now read-only.

Commit 7193466

Browse files
dev/codeforces/ Добавил кэширование для запроса получения рейтинга пользователя
1 parent c116e74 commit 7193466

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ dependencies {
4444
implementation 'io.jsonwebtoken:jjwt-impl:0.12.6'
4545
implementation 'io.jsonwebtoken:jjwt-jackson:0.12.6'
4646

47+
// cache
48+
implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8'
49+
4750
// test
4851
testImplementation 'org.springframework.boot:spring-boot-starter-test'
4952
testImplementation 'org.testcontainers:junit-jupiter:1.20.1'

src/main/java/com/cf/cfteam/config/AppConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.cf.cfteam.config;
22

33
import com.cf.cfteam.services.security.MyUserDetailsService;
4+
import com.cf.cfteam.utils.codeforces.mappers.GroupMapper;
45
import lombok.RequiredArgsConstructor;
56
import org.springframework.beans.factory.annotation.Value;
67
import org.springframework.context.annotation.Bean;
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.cf.cfteam.config;
2+
3+
import com.cf.cfteam.services.client.CodeforcesClient;
4+
import com.github.benmanes.caffeine.cache.Cache;
5+
import com.github.benmanes.caffeine.cache.CacheLoader;
6+
import com.github.benmanes.caffeine.cache.Caffeine;
7+
import com.github.benmanes.caffeine.cache.LoadingCache;
8+
import lombok.RequiredArgsConstructor;
9+
import org.springframework.context.annotation.Bean;
10+
import org.springframework.context.annotation.Configuration;
11+
12+
import java.util.concurrent.TimeUnit;
13+
14+
@Configuration
15+
@RequiredArgsConstructor
16+
public class CacheConfig {
17+
18+
private final CodeforcesClient codeforcesClient;
19+
20+
@Bean
21+
public LoadingCache<String, Double> ratingCache() {
22+
return Caffeine.newBuilder()
23+
.expireAfterWrite(1, TimeUnit.HOURS)
24+
.maximumSize(1000)
25+
.build(codeforcesClient::fetchRatingFromApi);
26+
}
27+
}

0 commit comments

Comments
 (0)