mirror of
https://codeberg.org/icewind/log-normalizer.git
synced 2026-06-03 13:54:11 +02:00
schema fixes
This commit is contained in:
parent
759f86b236
commit
25d7e4bb3c
2 changed files with 43 additions and 44 deletions
85
schema.sql
85
schema.sql
|
|
@ -10,7 +10,7 @@ CREATE TYPE map_type AS ENUM ('stopwatch', 'cp', 'koth', 'ctf', 'ultiduo', 'bbal
|
||||||
|
|
||||||
CREATE TYPE event_type AS ENUM ('charge', 'pointcap', 'medic_death', 'round_win');
|
CREATE TYPE event_type AS ENUM ('charge', 'pointcap', 'medic_death', 'round_win');
|
||||||
|
|
||||||
CREATE TYPE medigun AS ENUM ('medigun', 'kritzkrieg', 'quickfix', 'vacinator');
|
CREATE TYPE medigun AS ENUM ('medigun', 'kritzkrieg', 'quickfix', 'vaccinator');
|
||||||
|
|
||||||
CREATE FUNCTION clean_map_name(map TEXT) RETURNS TEXT AS $$
|
CREATE FUNCTION clean_map_name(map TEXT) RETURNS TEXT AS $$
|
||||||
SELECT regexp_replace(map, '(_(a|b|beta|u|r|v|rc|final|comptf|ugc)?[0-9]*[a-z]?$)|([0-9]+[a-z]?$)', '', 'g');
|
SELECT regexp_replace(map, '(_(a|b|beta|u|r|v|rc|final|comptf|ugc)?[0-9]*[a-z]?$)|([0-9]+[a-z]?$)', '', 'g');
|
||||||
|
|
@ -138,45 +138,6 @@ CREATE TABLE events_round_win (
|
||||||
CREATE UNIQUE INDEX events_round_win_round_id_idx
|
CREATE UNIQUE INDEX events_round_win_round_id_idx
|
||||||
ON events_round_win USING BTREE (round_id);
|
ON events_round_win USING BTREE (round_id);
|
||||||
|
|
||||||
CREATE TABLE players (
|
|
||||||
id BIGSERIAL PRIMARY KEY,
|
|
||||||
log_id INTEGER NOT NULL REFERENCES logs(id),
|
|
||||||
steam_id BIGINT NOT NULL,
|
|
||||||
name TEXT NOT NULL,
|
|
||||||
team team NOT NULL,
|
|
||||||
kills INTEGER NOT NULL,
|
|
||||||
deaths INTEGER NOT NULL,
|
|
||||||
assists INTEGER NOT NULL,
|
|
||||||
suicides INTEGER NOT NULL,
|
|
||||||
dmg INTEGER NOT NULL,
|
|
||||||
damage_taken INTEGER NOT NULL,
|
|
||||||
ubers INTEGER NOT NULL,
|
|
||||||
medigun_ubers INTEGER NOT NULL,
|
|
||||||
kritzkrieg_ubers INTEGER NOT NULL,
|
|
||||||
quickfix_ubers INTEGER NOT NULL,
|
|
||||||
vacinator_ubers INTEGER NOT NULL,
|
|
||||||
drops INTEGER NOT NULL,
|
|
||||||
medkits INTEGER NOT NULL,
|
|
||||||
medkits_hp INTEGER NOT NULL,
|
|
||||||
backstabs INTEGER NOT NULL,
|
|
||||||
headshots INTEGER NOT NULL,
|
|
||||||
heal INTEGER NOT NULL,
|
|
||||||
heals_received INTEGER NOT NULL,
|
|
||||||
scout_kills INTEGER NOT NULL,
|
|
||||||
soldier_kills INTEGER NOT NULL,
|
|
||||||
pyro_kills INTEGER NOT NULL,
|
|
||||||
demoman_kills INTEGER NOT NULL,
|
|
||||||
heavy_kills INTEGER NOT NULL,
|
|
||||||
engineer_kills INTEGER NOT NULL,
|
|
||||||
medic_kills INTEGER NOT NULL,
|
|
||||||
sniper_kills INTEGER NOT NULL,
|
|
||||||
spy_kills INTEGER NOT NULL,
|
|
||||||
is_winner BOOL GENERATED ALWAYS AS (team_is_winner(team, log_id)) STORED,
|
|
||||||
game_mode game_mode GENERATED ALWAYS AS (get_game_mode(log_id)) STORED,
|
|
||||||
clean_map TEXT GENERATED ALWAYS AS (get_clean_map(log_id)) STORED,
|
|
||||||
date TIMESTAMP WITHOUT TIME ZONE GENERATED ALWAYS AS (get_date(log_id)) STORED
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE FUNCTION team_is_winner(log_id INTEGER, team team) RETURNS BOOL AS $$
|
CREATE FUNCTION team_is_winner(log_id INTEGER, team team) RETURNS BOOL AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
is_winner BOOLEAN;
|
is_winner BOOLEAN;
|
||||||
|
|
@ -213,6 +174,45 @@ BEGIN
|
||||||
END; $$
|
END; $$
|
||||||
LANGUAGE PLPGSQL IMMUTABLE;
|
LANGUAGE PLPGSQL IMMUTABLE;
|
||||||
|
|
||||||
|
CREATE TABLE players (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
log_id INTEGER NOT NULL REFERENCES logs(id),
|
||||||
|
steam_id BIGINT NOT NULL,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
team team NOT NULL,
|
||||||
|
kills INTEGER NOT NULL,
|
||||||
|
deaths INTEGER NOT NULL,
|
||||||
|
assists INTEGER NOT NULL,
|
||||||
|
suicides INTEGER NOT NULL,
|
||||||
|
dmg INTEGER NOT NULL,
|
||||||
|
damage_taken INTEGER NOT NULL,
|
||||||
|
ubers INTEGER NOT NULL,
|
||||||
|
medigun_ubers INTEGER NOT NULL,
|
||||||
|
kritzkrieg_ubers INTEGER NOT NULL,
|
||||||
|
quickfix_ubers INTEGER NOT NULL,
|
||||||
|
vaccinator_ubers INTEGER NOT NULL,
|
||||||
|
drops INTEGER NOT NULL,
|
||||||
|
medkits INTEGER NOT NULL,
|
||||||
|
medkits_hp INTEGER NOT NULL,
|
||||||
|
backstabs INTEGER NOT NULL,
|
||||||
|
headshots INTEGER NOT NULL,
|
||||||
|
heal INTEGER NOT NULL,
|
||||||
|
heals_received INTEGER NOT NULL,
|
||||||
|
scout_kills INTEGER NOT NULL,
|
||||||
|
soldier_kills INTEGER NOT NULL,
|
||||||
|
pyro_kills INTEGER NOT NULL,
|
||||||
|
demoman_kills INTEGER NOT NULL,
|
||||||
|
heavy_kills INTEGER NOT NULL,
|
||||||
|
engineer_kills INTEGER NOT NULL,
|
||||||
|
medic_kills INTEGER NOT NULL,
|
||||||
|
sniper_kills INTEGER NOT NULL,
|
||||||
|
spy_kills INTEGER NOT NULL,
|
||||||
|
is_winner BOOL GENERATED ALWAYS AS (team_is_winner(log_id, team)) STORED,
|
||||||
|
game_mode game_mode GENERATED ALWAYS AS (get_game_mode(log_id)) STORED,
|
||||||
|
clean_map TEXT GENERATED ALWAYS AS (get_clean_map(log_id)) STORED,
|
||||||
|
date TIMESTAMP WITHOUT TIME ZONE GENERATED ALWAYS AS (get_date(log_id)) STORED
|
||||||
|
);
|
||||||
|
|
||||||
CREATE INDEX players_log_id_idx
|
CREATE INDEX players_log_id_idx
|
||||||
ON players USING BTREE (log_id);
|
ON players USING BTREE (log_id);
|
||||||
|
|
||||||
|
|
@ -239,14 +239,13 @@ CREATE INDEX players_date_idx
|
||||||
|
|
||||||
CREATE TABLE class_stats (
|
CREATE TABLE class_stats (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
player_id INTEGER NOT NULL REFERENCES players(id),
|
player_id BIGINT NOT NULL REFERENCES players(id),
|
||||||
type class_type NOT NULL,
|
type class_type NOT NULL,
|
||||||
time INTEGER NOT NULL,
|
time INTEGER 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,
|
||||||
dmg INTEGER NOT NULL,
|
dmg INTEGER NOT NULL,
|
||||||
dpm DECIMAL GENERATED ALWAYS AS (dmg::DECIMAL / time) STORED
|
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE INDEX class_stats_player_id_idx
|
CREATE INDEX class_stats_player_id_idx
|
||||||
|
|
@ -257,7 +256,7 @@ CREATE UNIQUE INDEX class_stats_player_id_type_idx
|
||||||
|
|
||||||
CREATE TABLE player_weapon_stats (
|
CREATE TABLE player_weapon_stats (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
class_stat_id INTEGER NOT NULL REFERENCES class_stats(id),
|
class_stat_id BIGINT NOT NULL REFERENCES class_stats(id),
|
||||||
weapon TEXT NOT NULL,
|
weapon TEXT NOT NULL,
|
||||||
kills INTEGER NOT NULL,
|
kills INTEGER NOT NULL,
|
||||||
shots INTEGER NOT NULL,
|
shots INTEGER NOT NULL,
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,7 @@ pub async fn store_log(pool: &PgPool, id: i32, log: &NormalizedLog) -> Result<()
|
||||||
"INSERT INTO players (\
|
"INSERT INTO players (\
|
||||||
log_id, steam_id, name, team, 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, vaccinator_ubers,\
|
||||||
drops, medkits, medkits_hp, backstabs, headshots,\
|
drops, medkits, medkits_hp, backstabs, headshots,\
|
||||||
heal, heals_received,\
|
heal, heals_received,\
|
||||||
scout_kills, soldier_kills, pyro_kills, demoman_kills,\
|
scout_kills, soldier_kills, pyro_kills, demoman_kills,\
|
||||||
|
|
@ -199,7 +199,7 @@ pub async fn store_log(pool: &PgPool, id: i32, log: &NormalizedLog) -> Result<()
|
||||||
.unwrap_or_default() as i32,
|
.unwrap_or_default() as i32,
|
||||||
player
|
player
|
||||||
.ubertypes
|
.ubertypes
|
||||||
.get(&Medigun::Vacinator)
|
.get(&Medigun::Vaccinator)
|
||||||
.copied()
|
.copied()
|
||||||
.unwrap_or_default() as i32,
|
.unwrap_or_default() as i32,
|
||||||
player.drops as i32,
|
player.drops as i32,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue