mirror of
https://codeberg.org/icewind/log-archiver.git
synced 2026-06-03 09:34:09 +02:00
bigint
This commit is contained in:
parent
27495efdcb
commit
1046b92939
1 changed files with 18 additions and 27 deletions
45
schema.sql
45
schema.sql
|
|
@ -79,13 +79,14 @@ END; $$
|
||||||
|
|
||||||
CREATE TABLE medic_stats (
|
CREATE TABLE medic_stats (
|
||||||
steam_id TEXT NOT NULL,
|
steam_id TEXT NOT NULL,
|
||||||
games INTEGER NOT NULL,
|
games BIGINT NOT NULL,
|
||||||
heals INTEGER NOT NULL,
|
heals BIGINT NOT NULL,
|
||||||
drops INTEGER NOT NULL,
|
drops BIGINT NOT NULL,
|
||||||
ubers INTEGER NOT NULL,
|
ubers BIGINT NOT NULL,
|
||||||
medic_time INTEGER NOT NULL,
|
medic_time BIGINT NOT NULL,
|
||||||
dpu NUMERIC NOT NULL GENERATED ALWAYS AS (dpu(drops, ubers)) STORED,
|
dpu NUMERIC NOT NULL GENERATED ALWAYS AS (dpx(drops, ubers)) STORED,
|
||||||
dps NUMERIC NOT NULL GENERATED ALWAYS AS (dpu(drops, medic_time)) STORED
|
dps NUMERIC NOT NULL GENERATED ALWAYS AS (dpx(drops, medic_time)) STORED,
|
||||||
|
dpg NUMERIC NOT NULL GENERATED ALWAYS AS (dpx(drops, games)) STORED,
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE UNIQUE INDEX medic_stats_steam_id_idx
|
CREATE UNIQUE INDEX medic_stats_steam_id_idx
|
||||||
|
|
@ -109,22 +110,12 @@ CREATE INDEX medic_stats_dpu_idx
|
||||||
CREATE INDEX medic_stats_dps_idx
|
CREATE INDEX medic_stats_dps_idx
|
||||||
ON medic_stats USING BTREE (dps);
|
ON medic_stats USING BTREE (dps);
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION dpu(drops INTEGER, ubers INTEGER) RETURNS NUMERIC AS $$
|
CREATE OR REPLACE FUNCTION dpx(drops BIGINT, x BIGINT) RETURNS NUMERIC AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
IF ubers = 0 THEN
|
IF x = 0 THEN
|
||||||
return 0;
|
return 0;
|
||||||
ELSE
|
ELSE
|
||||||
return drops::NUMERIC / ubers::NUMERIC;
|
return drops::NUMERIC / x::NUMERIC;
|
||||||
END IF;
|
|
||||||
END; $$
|
|
||||||
LANGUAGE PLPGSQL IMMUTABLE;
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION dps(drops INTEGER, medic_time INTEGER) RETURNS NUMERIC AS $$
|
|
||||||
BEGIN
|
|
||||||
IF medic_time = 0 THEN
|
|
||||||
return 0;
|
|
||||||
ELSE
|
|
||||||
return drops::NUMERIC / medic_time::NUMERIC;
|
|
||||||
END IF;
|
END IF;
|
||||||
END; $$
|
END; $$
|
||||||
LANGUAGE PLPGSQL IMMUTABLE;
|
LANGUAGE PLPGSQL IMMUTABLE;
|
||||||
|
|
@ -154,12 +145,12 @@ CREATE VIEW log_medic_stats AS
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
id,
|
||||||
normalize_steam_id(p.key) as steamid,
|
normalize_steam_id(p.key) as steamid,
|
||||||
(p.value->'drops')::INTEGER AS drops,
|
(p.value->'drops')::BIGINT AS drops,
|
||||||
(p.value->'heal')::INTEGER AS heals,
|
(p.value->'heal')::BIGINT AS heals,
|
||||||
(p.value->'ubers')::INTEGER AS ubers,
|
(p.value->'ubers')::BIGINT AS ubers,
|
||||||
(json->'info'->'total_length')::INTEGER AS length
|
(json->'info'->'total_length')::BIGINT AS length
|
||||||
FROM logs_raw, jsonb_each(json->'players') p
|
FROM logs_raw, jsonb_each(json->'players') p
|
||||||
WHERE (p.value->'drops')::INTEGER > 0 OR (p.value->'ubers')::INTEGER > 0;
|
WHERE (p.value->'drops')::BIGINT > 0 OR (p.value->'ubers')::BIGINT > 0;
|
||||||
|
|
||||||
CREATE VIEW log_player_names AS
|
CREATE VIEW log_player_names AS
|
||||||
SELECT
|
SELECT
|
||||||
|
|
@ -172,8 +163,8 @@ FROM logs_raw, jsonb_each(json->'names') p;
|
||||||
CREATE TABLE player_names (
|
CREATE TABLE player_names (
|
||||||
steam_id TEXT NOT NULL,
|
steam_id TEXT NOT NULL,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
count INTEGER NOT NULL,
|
count BIGINT NOT NULL,
|
||||||
use_time INTEGER NOT NULL
|
use_time BIGINT NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE UNIQUE INDEX player_names_steam_id_name_idx
|
CREATE UNIQUE INDEX player_names_steam_id_name_idx
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue