add is_ranked attribute to matches
This commit is contained in:
parent
b75c0e15dc
commit
1eb81092d7
6 changed files with 16 additions and 3 deletions
|
@ -0,0 +1 @@
|
||||||
|
ALTER TABLE maps DROP COLUMN is_ranked;
|
|
@ -0,0 +1 @@
|
||||||
|
ALTER TABLE maps ADD COLUMN is_ranked BOOLEAN NOT NULL DEFAULT FALSE;
|
|
@ -14,6 +14,7 @@ pub struct Map {
|
||||||
pub id: i32,
|
pub id: i32,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub file_path: String,
|
pub file_path: String,
|
||||||
|
pub is_ranked: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_map(new_map: NewMap, conn: &mut PgConnection) -> QueryResult<Map> {
|
pub fn create_map(new_map: NewMap, conn: &mut PgConnection) -> QueryResult<Map> {
|
||||||
|
@ -33,3 +34,9 @@ pub fn find_map_by_name(name: &str, conn: &mut PgConnection) -> QueryResult<Map>
|
||||||
pub fn list_maps(conn: &mut PgConnection) -> QueryResult<Vec<Map>> {
|
pub fn list_maps(conn: &mut PgConnection) -> QueryResult<Vec<Map>> {
|
||||||
maps::table.get_results(conn)
|
maps::table.get_results(conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_ranked_maps(conn: &mut PgConnection) -> QueryResult<Vec<Map>> {
|
||||||
|
maps::table
|
||||||
|
.filter(maps::is_ranked.eq(true))
|
||||||
|
.get_results(conn)
|
||||||
|
}
|
||||||
|
|
|
@ -140,12 +140,15 @@ fn fetch_full_match_data(
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: this method should disappear
|
// TODO: this method should disappear
|
||||||
pub fn list_matches(amount: i64, conn: &mut PgConnection) -> QueryResult<Vec<FullMatchData>> {
|
pub fn fetch_ranked_maps(amount: i64, conn: &mut PgConnection) -> QueryResult<Vec<FullMatchData>> {
|
||||||
conn.transaction(|conn| {
|
conn.transaction(|conn| {
|
||||||
let matches = matches::table
|
let matches = matches::table
|
||||||
|
.inner_join(maps::table)
|
||||||
.filter(matches::state.eq(MatchState::Finished))
|
.filter(matches::state.eq(MatchState::Finished))
|
||||||
|
.filter(maps::is_ranked.eq(true))
|
||||||
.order_by(matches::created_at.desc())
|
.order_by(matches::created_at.desc())
|
||||||
.limit(amount)
|
.limit(amount)
|
||||||
|
.select(matches::all_columns)
|
||||||
.get_results::<MatchBase>(conn)?;
|
.get_results::<MatchBase>(conn)?;
|
||||||
|
|
||||||
fetch_full_match_data(matches, conn)
|
fetch_full_match_data(matches, conn)
|
||||||
|
|
|
@ -38,7 +38,7 @@ pub async fn run_ranker(config: Arc<GlobalConfig>, db_pool: DbPool) {
|
||||||
.cloned()
|
.cloned()
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let maps = db::maps::list_maps(&mut db_conn).expect("could not load map");
|
let maps = db::maps::get_ranked_maps(&mut db_conn).expect("could not load map");
|
||||||
let map = match maps.choose(&mut rand::thread_rng()).cloned() {
|
let map = match maps.choose(&mut rand::thread_rng()).cloned() {
|
||||||
None => continue, // no maps available
|
None => continue, // no maps available
|
||||||
Some(map) => map,
|
Some(map) => map,
|
||||||
|
@ -93,7 +93,7 @@ struct MatchStats {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fetch_match_stats(db_conn: &mut PgConnection) -> QueryResult<HashMap<(i32, i32), MatchStats>> {
|
fn fetch_match_stats(db_conn: &mut PgConnection) -> QueryResult<HashMap<(i32, i32), MatchStats>> {
|
||||||
let matches = db::matches::list_matches(RANKER_NUM_MATCHES, db_conn)?;
|
let matches = db::matches::fetch_ranked_maps(RANKER_NUM_MATCHES, db_conn)?;
|
||||||
|
|
||||||
let mut match_stats = HashMap::<(i32, i32), MatchStats>::new();
|
let mut match_stats = HashMap::<(i32, i32), MatchStats>::new();
|
||||||
for m in matches {
|
for m in matches {
|
||||||
|
|
|
@ -42,6 +42,7 @@ diesel::table! {
|
||||||
id -> Int4,
|
id -> Int4,
|
||||||
name -> Text,
|
name -> Text,
|
||||||
file_path -> Text,
|
file_path -> Text,
|
||||||
|
is_ranked -> Bool,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue