store player team

This commit is contained in:
Robin Appelman 2020-06-18 17:14:55 +02:00
commit 45e32f5601
3 changed files with 72 additions and 66 deletions

View file

@ -128,6 +128,7 @@ CREATE TABLE players (
log_id INTEGER NOT NULL REFERENCES logs(id), log_id INTEGER NOT NULL REFERENCES logs(id),
steam_id BIGINT NOT NULL, steam_id BIGINT NOT NULL,
name TEXT NOT NULL, name TEXT NOT NULL,
team team NOT NULL,
kills INTEGER NOT NULL, kills INTEGER NOT NULL,
deaths INTEGER NOT NULL, deaths INTEGER NOT NULL,
assists INTEGER NOT NULL, assists INTEGER NOT NULL,

View file

@ -142,10 +142,11 @@ pub async fn store_log(pool: &PgPool, id: i32, log: &NormalizedLog) -> Result<()
} }
for (steam_id, player) in &log.players { for (steam_id, player) in &log.players {
if let Some(team) = player.team {
let kills = log.class_kills.get(steam_id).cloned().unwrap_or_default(); let kills = log.class_kills.get(steam_id).cloned().unwrap_or_default();
let player_id: i32 = sqlx::query!( let player_id: i32 = sqlx::query!(
"INSERT INTO players (\ "INSERT INTO players (\
log_id, steam_id, name, kills, deaths, assists,\ log_id, steam_id, name, team, kills, deaths, assists,\
suicides, dmg, damage_taken, ubers, medigun_ubers,\ suicides, dmg, damage_taken, ubers, medigun_ubers,\
kritzkrieg_ubers, quickfix_ubers, vacinator_ubers,\ kritzkrieg_ubers, quickfix_ubers, vacinator_ubers,\
drops, medkits, medkits_hp, backstabs, headshots,\ drops, medkits, medkits_hp, backstabs, headshots,\
@ -156,12 +157,14 @@ pub async fn store_log(pool: &PgPool, id: i32, log: &NormalizedLog) -> Result<()
VALUES(\ VALUES(\
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10,\ $1, $2, $3, $4, $5, $6, $7, $8, $9, $10,\
$11, $12, $13, $14, $15, $16, $17, $18, $19, $20,\ $11, $12, $13, $14, $15, $16, $17, $18, $19, $20,\
$21, $22, $23, $24, $25, $26, $27, $28, $29, $30\ $21, $22, $23, $24, $25, $26, $27, $28, $29, $30,\
$31\
)\ )\
RETURNING id", RETURNING id",
id as i32, id as i32,
u64::from(*steam_id) as i64, u64::from(*steam_id) as i64,
log.names.get(steam_id).cloned().unwrap_or_default(), log.names.get(steam_id).cloned().unwrap_or_default(),
team as TeamId,
player.kills as i32, player.kills as i32,
player.deaths as i32, player.deaths as i32,
player.assists as i32, player.assists as i32,
@ -245,6 +248,7 @@ pub async fn store_log(pool: &PgPool, id: i32, log: &NormalizedLog) -> Result<()
} }
} }
} }
}
tx.commit().await?; tx.commit().await?;

View file

@ -55,7 +55,7 @@ pub struct Team {
#[derive(Debug, Clone, Deserialize)] #[derive(Debug, Clone, Deserialize)]
pub struct Player { pub struct Player {
pub class_stats: Vec<ClassStat>, pub class_stats: Vec<ClassStat>,
pub team: TeamId, pub team: Option<TeamId>,
pub kills: u16, pub kills: u16,
pub deaths: u16, pub deaths: u16,
pub assists: u16, pub assists: u16,
@ -122,6 +122,7 @@ pub enum RawWeaponStats {
Stats { Stats {
kills: u32, kills: u32,
dmg: u32, dmg: u32,
#[serde(default)]
avg_dmg: f32, avg_dmg: f32,
shots: u32, shots: u32,
hits: u32, hits: u32,