diff options
author | Ilion Beyst <ilion.beyst@gmail.com> | 2022-07-25 22:26:58 +0200 |
---|---|---|
committer | Ilion Beyst <ilion.beyst@gmail.com> | 2022-07-25 22:26:58 +0200 |
commit | c30222cf9a5f173f30e5b6193714401dc0e3569f (patch) | |
tree | 457a3461a3e2203a8aefaf0b3432a97c22e84101 /planetwars-server/src | |
parent | 67276bd0bbac15fe087edafd59d164c686509b35 (diff) | |
download | planetwars.dev-c30222cf9a5f173f30e5b6193714401dc0e3569f.tar.xz planetwars.dev-c30222cf9a5f173f30e5b6193714401dc0e3569f.zip |
limit amount of matches used by ranker
Diffstat (limited to 'planetwars-server/src')
-rw-r--r-- | planetwars-server/src/db/matches.rs | 7 | ||||
-rw-r--r-- | planetwars-server/src/modules/ranking.rs | 4 | ||||
-rw-r--r-- | planetwars-server/src/routes/matches.rs | 2 |
3 files changed, 9 insertions, 4 deletions
diff --git a/planetwars-server/src/db/matches.rs b/planetwars-server/src/db/matches.rs index 39b7d9b..061e2ea 100644 --- a/planetwars-server/src/db/matches.rs +++ b/planetwars-server/src/db/matches.rs @@ -87,9 +87,12 @@ pub struct MatchData { pub match_players: Vec<MatchPlayer>, } -pub fn list_matches(conn: &PgConnection) -> QueryResult<Vec<FullMatchData>> { +pub fn list_matches(amount: i64, conn: &PgConnection) -> QueryResult<Vec<FullMatchData>> { conn.transaction(|| { - let matches = matches::table.get_results::<MatchBase>(conn)?; + let matches = matches::table + .order_by(matches::created_at.desc()) + .limit(amount) + .get_results::<MatchBase>(conn)?; let match_players = MatchPlayer::belonging_to(&matches) .left_join( diff --git a/planetwars-server/src/modules/ranking.rs b/planetwars-server/src/modules/ranking.rs index d508d6c..cb699fe 100644 --- a/planetwars-server/src/modules/ranking.rs +++ b/planetwars-server/src/modules/ranking.rs @@ -11,7 +11,9 @@ use std::sync::Arc; use std::time::{Duration, Instant}; use tokio; +// TODO: put these in a config const RANKER_INTERVAL: u64 = 60; +const RANKER_NUM_MATCHES: i64 = 10_000; pub async fn run_ranker(config: Arc<GlobalConfig>, db_pool: DbPool) { // TODO: make this configurable @@ -80,7 +82,7 @@ struct MatchStats { } fn fetch_match_stats(db_conn: &PgConnection) -> QueryResult<HashMap<(i32, i32), MatchStats>> { - let matches = db::matches::list_matches(db_conn)?; + let matches = db::matches::list_matches(RANKER_NUM_MATCHES, db_conn)?; let mut match_stats = HashMap::<(i32, i32), MatchStats>::new(); for m in matches { diff --git a/planetwars-server/src/routes/matches.rs b/planetwars-server/src/routes/matches.rs index a980daa..58ca478 100644 --- a/planetwars-server/src/routes/matches.rs +++ b/planetwars-server/src/routes/matches.rs @@ -24,7 +24,7 @@ pub struct ApiMatchPlayer { } pub async fn list_matches(conn: DatabaseConnection) -> Result<Json<Vec<ApiMatch>>, StatusCode> { - matches::list_matches(&conn) + matches::list_matches(100, &conn) .map_err(|_| StatusCode::BAD_REQUEST) .map(|matches| Json(matches.into_iter().map(match_data_to_api).collect())) } |