Skip to content

Commit 68f0c80

Browse files
committed
change: RPS ranking API response
1 parent 6629601 commit 68f0c80

File tree

5 files changed

+54
-52
lines changed

5 files changed

+54
-52
lines changed

atcoder-problems-backend/src/server/ranking/language.rs

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,36 @@
11
use super::{
2-
LanguageRankingRequest, LanguageUserRankResponse, RankingRequestFormat, RankingResponse,
3-
RankingSelector, UserRankRequest, UserRankSelector,
2+
UserRankResponseFormat, RankingRequestFormat, RankingResponse, RankingSelector, UserRankRequest, UserRankSelector,
43
};
54
use crate::server::AppData;
65

76
use actix_web::{error, web, Result};
87
use async_trait::async_trait;
8+
use serde::{Deserialize, Serialize};
99
use sql_client::language_count::LanguageCountClient;
10+
use std::ops::Range;
11+
12+
13+
#[derive(Deserialize)]
14+
pub(crate) struct LanguageRankingRequest {
15+
from: usize,
16+
to: usize,
17+
language: String,
18+
}
19+
20+
impl RankingRequestFormat for LanguageRankingRequest {
21+
fn range(&self) -> Range<usize> {
22+
(self.from)..(self.to)
23+
}
24+
}
25+
26+
#[derive(Debug, Serialize)]
27+
pub(crate) struct LanguageUserRankResponse {
28+
language: String,
29+
count: i64,
30+
rank: i64,
31+
}
32+
33+
impl UserRankResponseFormat for LanguageUserRankResponse {}
1034

1135
pub(crate) struct LanguageRanking;
1236

atcoder-problems-backend/src/server/ranking/mod.rs

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use crate::server::AppData;
33
use actix_web::{web, HttpRequest, HttpResponse, Result};
44
use async_trait::async_trait;
55
use serde::{de::DeserializeOwned, Deserialize, Serialize};
6-
use sql_client::models::UserSum;
76
use std::ops::Range;
87

98
pub(crate) mod ac_count;
@@ -77,7 +76,6 @@ pub(crate) trait UserRankSelector<A: Sync + Send + Clone + 'static> {
7776
}
7877
}
7978

80-
// ranking requests
8179
#[derive(Deserialize)]
8280
pub(crate) struct RankingRequest {
8381
from: usize,
@@ -90,20 +88,6 @@ impl RankingRequestFormat for RankingRequest {
9088
}
9189
}
9290

93-
#[derive(Deserialize)]
94-
pub(crate) struct LanguageRankingRequest {
95-
from: usize,
96-
to: usize,
97-
language: String,
98-
}
99-
100-
impl RankingRequestFormat for LanguageRankingRequest {
101-
fn range(&self) -> Range<usize> {
102-
(self.from)..(self.to)
103-
}
104-
}
105-
106-
// ranking responses
10791
#[derive(Serialize)]
10892
pub(crate) struct RankingResponse {
10993
user_id: String,
@@ -112,30 +96,17 @@ pub(crate) struct RankingResponse {
11296

11397
impl RankingResponseFormat for RankingResponse {}
11498

115-
impl RankingResponseFormat for UserSum {}
116-
117-
// user rank requests
11899
#[derive(Deserialize)]
119100
pub(crate) struct UserRankRequest {
120101
user: String,
121102
}
122103

123104
impl UserRankRequestFormat for UserRankRequest {}
124105

125-
// user rank responses
126106
#[derive(Serialize)]
127107
pub(crate) struct UserRankResponse {
128108
count: i64,
129109
rank: i64,
130110
}
131111

132112
impl UserRankResponseFormat for UserRankResponse {}
133-
134-
#[derive(Debug, Serialize)]
135-
pub(crate) struct LanguageUserRankResponse {
136-
language: String,
137-
count: i64,
138-
rank: i64,
139-
}
140-
141-
impl UserRankResponseFormat for LanguageUserRankResponse {}

atcoder-problems-backend/src/server/ranking/rated_point_sum.rs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,29 @@
11
use super::{
2-
RankingRequest, RankingRequestFormat, RankingSelector, UserRankRequest, UserRankResponse,
3-
UserRankSelector, UserSum,
2+
RankingRequest, RankingRequestFormat, RankingSelector, UserRankRequest, UserRankResponse, UserRankSelector, RankingResponseFormat
43
};
54
use crate::server::AppData;
65

76
use actix_web::{error, web, Result};
87
use async_trait::async_trait;
98
use sql_client::rated_point_sum::RatedPointSumClient;
9+
use serde::{Serialize};
10+
11+
// will be deprecated and replaced with super::RankingResponse
12+
#[derive(Debug, Serialize)]
13+
pub(crate) struct RPSRankingResponse {
14+
user_id: String,
15+
count: i64,
16+
point_sum: i64,
17+
}
18+
19+
impl RankingResponseFormat for RPSRankingResponse {}
1020

1121
pub(crate) struct RatedPointSumRanking;
1222

1323
#[async_trait(?Send)]
1424
impl<A: Sync + Send + Clone + 'static> RankingSelector<A> for RatedPointSumRanking {
1525
type Request = RankingRequest;
16-
type Response = UserSum;
26+
type Response = RPSRankingResponse;
1727
async fn fetch(
1828
data: web::Data<AppData<A>>,
1929
query: Self::Request,
@@ -23,7 +33,14 @@ impl<A: Sync + Send + Clone + 'static> RankingSelector<A> for RatedPointSumRanki
2333
.load_rated_point_sum_in_range(query.range())
2434
.await
2535
.map_err(error::ErrorInternalServerError)?;
26-
Ok(ranking)
36+
Ok(ranking
37+
.into_iter()
38+
.map(|entry| RPSRankingResponse {
39+
user_id: entry.user_id,
40+
count: entry.point_sum,
41+
point_sum: entry.point_sum,
42+
})
43+
.collect())
2744
}
2845
}
2946

atcoder-problems-backend/tests/test_server_e2e_rated_point_sum_ranking.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ async fn test_rated_point_sum_ranking() {
6161
assert_eq!(
6262
response,
6363
json!([
64-
{"user_id":"u2","point_sum":2},
65-
{"user_id":"u1","point_sum":1},
66-
{"user_id":"u3","point_sum":1}
64+
{"user_id":"u2","point_sum":2,"count":2},
65+
{"user_id":"u1","point_sum":1,"count":1},
66+
{"user_id":"u3","point_sum":1,"count":1}
6767
])
6868
);
6969

@@ -79,8 +79,8 @@ async fn test_rated_point_sum_ranking() {
7979
assert_eq!(
8080
response,
8181
json!([
82-
{"user_id":"u1","point_sum":1},
83-
{"user_id":"u3","point_sum":1}
82+
{"user_id":"u1","point_sum":1,"count":1},
83+
{"user_id":"u3","point_sum":1,"count":1}
8484
])
8585
);
8686
let response = reqwest::get(url(
@@ -95,7 +95,7 @@ async fn test_rated_point_sum_ranking() {
9595
assert_eq!(
9696
response,
9797
json!([
98-
{"user_id":"u2","point_sum":2}
98+
{"user_id":"u2","point_sum":2,"count":2}
9999
])
100100
);
101101

atcoder-problems-frontend/src/api/APIClient.ts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -99,18 +99,8 @@ export const useUserStreakRank = (user: string) => {
9999
};
100100

101101
export const useSumRanking = (from: number, to: number) => {
102-
const fetcher = async (url: string) => {
103-
const ranking = await fetchTypedArray<SumRankingEntry>(
104-
url,
105-
isSumRankingEntry
106-
);
107-
return ranking.map((entry) => ({
108-
count: entry.point_sum,
109-
user_id: entry.user_id,
110-
}));
111-
};
112102
const url = `${ATCODER_API_URL}/v3/rated_point_sum_ranking?from=${from}&to=${to}`;
113-
return useSWRData(url, fetcher);
103+
return useRankingV3(url);
114104
};
115105

116106
export const useUserSumRank = (user: string) => {

0 commit comments

Comments
 (0)