mirror of
https://codeberg.org/icewind/log-normalizer.git
synced 2026-06-03 13:54:11 +02:00
store player team
This commit is contained in:
parent
33187185e5
commit
45e32f5601
3 changed files with 72 additions and 66 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
134
src/database.rs
134
src/database.rs
|
|
@ -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 {
|
||||||
let kills = log.class_kills.get(steam_id).cloned().unwrap_or_default();
|
if let Some(team) = player.team {
|
||||||
let player_id: i32 = sqlx::query!(
|
let kills = log.class_kills.get(steam_id).cloned().unwrap_or_default();
|
||||||
"INSERT INTO players (\
|
let player_id: i32 = sqlx::query!(
|
||||||
log_id, steam_id, name, kills, deaths, assists,\
|
"INSERT INTO players (\
|
||||||
|
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,63 +157,65 @@ 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(),
|
||||||
player.kills as i32,
|
team as TeamId,
|
||||||
player.deaths as i32,
|
player.kills as i32,
|
||||||
player.assists as i32,
|
player.deaths as i32,
|
||||||
player.suicides as i32,
|
player.assists as i32,
|
||||||
player.dmg as i32,
|
player.suicides as i32,
|
||||||
player.dt_real as i32,
|
player.dmg as i32,
|
||||||
player.ubers as i32,
|
player.dt_real as i32,
|
||||||
player
|
player.ubers as i32,
|
||||||
.ubertypes
|
player
|
||||||
.get(&Medigun::Medigun)
|
.ubertypes
|
||||||
.copied()
|
.get(&Medigun::Medigun)
|
||||||
.unwrap_or_default() as i32,
|
.copied()
|
||||||
player
|
.unwrap_or_default() as i32,
|
||||||
.ubertypes
|
player
|
||||||
.get(&Medigun::KritzKrieg)
|
.ubertypes
|
||||||
.copied()
|
.get(&Medigun::KritzKrieg)
|
||||||
.unwrap_or_default() as i32,
|
.copied()
|
||||||
player
|
.unwrap_or_default() as i32,
|
||||||
.ubertypes
|
player
|
||||||
.get(&Medigun::QuickFix)
|
.ubertypes
|
||||||
.copied()
|
.get(&Medigun::QuickFix)
|
||||||
.unwrap_or_default() as i32,
|
.copied()
|
||||||
player
|
.unwrap_or_default() as i32,
|
||||||
.ubertypes
|
player
|
||||||
.get(&Medigun::Vacinator)
|
.ubertypes
|
||||||
.copied()
|
.get(&Medigun::Vacinator)
|
||||||
.unwrap_or_default() as i32,
|
.copied()
|
||||||
player.drops as i32,
|
.unwrap_or_default() as i32,
|
||||||
player.medkits as i32,
|
player.drops as i32,
|
||||||
player.medkits_hp as i32,
|
player.medkits as i32,
|
||||||
player.backstabs as i32,
|
player.medkits_hp as i32,
|
||||||
player.headshots as i32,
|
player.backstabs as i32,
|
||||||
player.heal as i32,
|
player.headshots as i32,
|
||||||
heals_received.get(steam_id).copied().unwrap_or_default() as i32,
|
player.heal as i32,
|
||||||
kills.scout as i32,
|
heals_received.get(steam_id).copied().unwrap_or_default() as i32,
|
||||||
kills.soldier as i32,
|
kills.scout as i32,
|
||||||
kills.pyro as i32,
|
kills.soldier as i32,
|
||||||
kills.demoman as i32,
|
kills.pyro as i32,
|
||||||
kills.heavyweapons as i32,
|
kills.demoman as i32,
|
||||||
kills.engineer as i32,
|
kills.heavyweapons as i32,
|
||||||
kills.medic as i32,
|
kills.engineer as i32,
|
||||||
kills.sniper as i32,
|
kills.medic as i32,
|
||||||
kills.spy as i32
|
kills.sniper as i32,
|
||||||
)
|
kills.spy as i32
|
||||||
.fetch_one(&mut tx)
|
)
|
||||||
.await?
|
.fetch_one(&mut tx)
|
||||||
.id;
|
.await?
|
||||||
|
.id;
|
||||||
|
|
||||||
for class in &player.class_stats {
|
for class in &player.class_stats {
|
||||||
if class.class != Class::Unknown {
|
if class.class != Class::Unknown {
|
||||||
let class_stat_id: i32 = sqlx::query!(
|
let class_stat_id: i32 = sqlx::query!(
|
||||||
"INSERT INTO class_stats(player_id, type, time, kills, deaths, assists, dmg)\
|
"INSERT INTO class_stats(player_id, type, time, kills, deaths, assists, dmg)\
|
||||||
VALUES($1, $2, $3, $4, $5, $6, $7)\
|
VALUES($1, $2, $3, $4, $5, $6, $7)\
|
||||||
RETURNING id",
|
RETURNING id",
|
||||||
|
|
@ -224,12 +227,12 @@ pub async fn store_log(pool: &PgPool, id: i32, log: &NormalizedLog) -> Result<()
|
||||||
class.assists as i32,
|
class.assists as i32,
|
||||||
class.dmg as i32,
|
class.dmg as i32,
|
||||||
)
|
)
|
||||||
.fetch_one(&mut tx)
|
.fetch_one(&mut tx)
|
||||||
.await?
|
.await?
|
||||||
.id;
|
.id;
|
||||||
|
|
||||||
for (weapon, stats) in &class.weapon {
|
for (weapon, stats) in &class.weapon {
|
||||||
sqlx::query!(
|
sqlx::query!(
|
||||||
"INSERT INTO player_weapon_stats(class_stat_id, weapon, kills, shots, hits, dmg)\
|
"INSERT INTO player_weapon_stats(class_stat_id, weapon, kills, shots, hits, dmg)\
|
||||||
VALUES($1, $2, $3, $4, $5, $6)",
|
VALUES($1, $2, $3, $4, $5, $6)",
|
||||||
class_stat_id as i32,
|
class_stat_id as i32,
|
||||||
|
|
@ -239,8 +242,9 @@ pub async fn store_log(pool: &PgPool, id: i32, log: &NormalizedLog) -> Result<()
|
||||||
stats.hits as i32,
|
stats.hits as i32,
|
||||||
stats.dmg as i32,
|
stats.dmg as i32,
|
||||||
)
|
)
|
||||||
.execute(&mut tx)
|
.execute(&mut tx)
|
||||||
.await?;
|
.await?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue