From 876e77cf8868c700419b5cd3bb15672154dfe753 Mon Sep 17 00:00:00 2001 From: legonzaur Date: Wed, 31 May 2023 20:08:22 +0200 Subject: [PATCH 1/4] remove unnecessary console log --- src/client/client.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/client/client.ts b/src/client/client.ts index dd92b7b..8ce6d58 100644 --- a/src/client/client.ts +++ b/src/client/client.ts @@ -75,7 +75,6 @@ router.get('/players', const result = db.selectFrom('kill_view') let data const resultFiltered = processQueryArgs(result, req.query as unknown as string | string[]) - console.log(result !== resultFiltered) if (result !== resultFiltered) { const selection = resultFiltered.select([sum('kills').as('kills'), sum('deaths').as('deaths'), sum('deaths_with_weapon').as('deaths_while_equipped'), 'attacker_id', sql`last(attacker_name)`.as('username'), sum('total_distance').as('total_distance'), max('max_distance').as('max_distance')]).groupBy('attacker_id') data = (await selection.execute()).reduce>((acc, curr) => { From 8509b30dd80e2e824c0ee4df6487ff5c3be5941e Mon Sep 17 00:00:00 2001 From: legonzaur Date: Thu, 22 Jun 2023 13:08:13 +0200 Subject: [PATCH 2/4] hotfix draft for empty names --- src/db/migrations/2023-05-29-01 kill_view.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/db/migrations/2023-05-29-01 kill_view.ts b/src/db/migrations/2023-05-29-01 kill_view.ts index a2090fa..8172703 100644 --- a/src/db/migrations/2023-05-29-01 kill_view.ts +++ b/src/db/migrations/2023-05-29-01 kill_view.ts @@ -53,8 +53,8 @@ BEGIN new.servername = servername AND new.host = host; ELSE - INSERT INTO kill_view(kills,deaths, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance) - VALUES(1,0,0, new.attacker_id, new.map, new.game_mode, new.cause_of_death, new.servername, new.host,new.distance, new.distance); + INSERT INTO kill_view(kills,deaths, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance, attacker_name) + VALUES(1,0,0, new.attacker_id, new.map, new.game_mode, new.cause_of_death, new.servername, new.host,new.distance, new.distance, new.attacker_name); END IF; @@ -77,8 +77,8 @@ BEGIN new.servername = servername AND new.host = host; ELSE - INSERT INTO kill_view(deaths, kills, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance) - VALUES(1,0,0, new.victim_id, new.map, new.game_mode, new.cause_of_death, new.servername, new.host,0,0); + INSERT INTO kill_view(deaths, kills, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance, attacker_name) + VALUES(1,0,0, new.victim_id, new.map, new.game_mode, new.cause_of_death, new.servername, new.host,0,0, new.victim_name); END IF; @@ -101,8 +101,8 @@ BEGIN new.servername = servername AND new.host = host; ELSE - INSERT INTO kill_view(deaths, kills, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance) - VALUES(0,0,1, new.victim_id, new.map, new.game_mode, new.attacker_current_weapon, new.servername, new.host,0,0); + INSERT INTO kill_view(deaths, kills, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance, attacker_name) + VALUES(0,0,1, new.victim_id, new.map, new.game_mode, new.attacker_current_weapon, new.servername, new.host,0,0, new.victim_name); END IF; From 0f5aecb69c47f606c66411334c2e2785a173c5ff Mon Sep 17 00:00:00 2001 From: legonzaur Date: Thu, 22 Jun 2023 13:10:13 +0200 Subject: [PATCH 3/4] revert migration changes because migration files shouldn't change --- src/db/migrations/2023-05-29-01 kill_view.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/db/migrations/2023-05-29-01 kill_view.ts b/src/db/migrations/2023-05-29-01 kill_view.ts index 8172703..a2090fa 100644 --- a/src/db/migrations/2023-05-29-01 kill_view.ts +++ b/src/db/migrations/2023-05-29-01 kill_view.ts @@ -53,8 +53,8 @@ BEGIN new.servername = servername AND new.host = host; ELSE - INSERT INTO kill_view(kills,deaths, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance, attacker_name) - VALUES(1,0,0, new.attacker_id, new.map, new.game_mode, new.cause_of_death, new.servername, new.host,new.distance, new.distance, new.attacker_name); + INSERT INTO kill_view(kills,deaths, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance) + VALUES(1,0,0, new.attacker_id, new.map, new.game_mode, new.cause_of_death, new.servername, new.host,new.distance, new.distance); END IF; @@ -77,8 +77,8 @@ BEGIN new.servername = servername AND new.host = host; ELSE - INSERT INTO kill_view(deaths, kills, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance, attacker_name) - VALUES(1,0,0, new.victim_id, new.map, new.game_mode, new.cause_of_death, new.servername, new.host,0,0, new.victim_name); + INSERT INTO kill_view(deaths, kills, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance) + VALUES(1,0,0, new.victim_id, new.map, new.game_mode, new.cause_of_death, new.servername, new.host,0,0); END IF; @@ -101,8 +101,8 @@ BEGIN new.servername = servername AND new.host = host; ELSE - INSERT INTO kill_view(deaths, kills, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance, attacker_name) - VALUES(0,0,1, new.victim_id, new.map, new.game_mode, new.attacker_current_weapon, new.servername, new.host,0,0, new.victim_name); + INSERT INTO kill_view(deaths, kills, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance) + VALUES(0,0,1, new.victim_id, new.map, new.game_mode, new.attacker_current_weapon, new.servername, new.host,0,0); END IF; From a49fd1f5bb26438a1279beadf9493842e709aef1 Mon Sep 17 00:00:00 2001 From: legonzaur Date: Thu, 22 Jun 2023 13:11:09 +0200 Subject: [PATCH 4/4] add migartion to change update_kill_view_fnct --- src/client/client.ts | 1 + .../2023-06-22-01 fix_empty_names.ts | 100 ++++++++++++++++++ src/process/onKill.ts | 1 - 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 src/db/migrations/2023-06-22-01 fix_empty_names.ts diff --git a/src/client/client.ts b/src/client/client.ts index 8ce6d58..e28778b 100644 --- a/src/client/client.ts +++ b/src/client/client.ts @@ -75,6 +75,7 @@ router.get('/players', const result = db.selectFrom('kill_view') let data const resultFiltered = processQueryArgs(result, req.query as unknown as string | string[]) + // Cache stuff when no route is present so request doesn't takes 4secs to complete if (result !== resultFiltered) { const selection = resultFiltered.select([sum('kills').as('kills'), sum('deaths').as('deaths'), sum('deaths_with_weapon').as('deaths_while_equipped'), 'attacker_id', sql`last(attacker_name)`.as('username'), sum('total_distance').as('total_distance'), max('max_distance').as('max_distance')]).groupBy('attacker_id') data = (await selection.execute()).reduce>((acc, curr) => { diff --git a/src/db/migrations/2023-06-22-01 fix_empty_names.ts b/src/db/migrations/2023-06-22-01 fix_empty_names.ts new file mode 100644 index 0000000..b56e37d --- /dev/null +++ b/src/db/migrations/2023-06-22-01 fix_empty_names.ts @@ -0,0 +1,100 @@ +import { type Kysely } from 'kysely' +import { Client } from 'pg' + +const pgClient = new Client({ + host: process.env.POSTGRES_HOST, + database: process.env.POSTGRES_DATABASE, + user: process.env.POSTGRES_USER, + password: process.env.POSTGRES_PASSWORD +}) + +export async function up (db: Kysely): Promise { + await pgClient.connect() + await pgClient.query(`CREATE OR REPLACE FUNCTION update_kill_view_fnct() + RETURNS TRIGGER +AS $$ +BEGIN + IF EXISTS( + SELECT * FROM kill_view + WHERE + new.attacker_id = attacker_id AND + new.map = map AND + new.game_mode = game_mode AND + new.cause_of_death = cause_of_death AND + new.servername = servername AND + new.host = host + ) THEN + UPDATE kill_view SET kills = kills + 1, + max_distance = (SELECT Max(v) FROM (VALUES (new.distance), (max_distance)) AS value(v)), + total_distance = total_distance + new.distance, + attacker_name = new.attacker_name + WHERE + new.attacker_id = attacker_id AND + new.map = map AND + new.game_mode = game_mode AND + new.cause_of_death = cause_of_death AND + new.servername = servername AND + new.host = host; + ELSE + INSERT INTO kill_view(kills,deaths, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance, attacker_name) + VALUES(1,0,0, new.attacker_id, new.map, new.game_mode, new.cause_of_death, new.servername, new.host,new.distance, new.distance, new.attacker_name); + END IF; + + + IF EXISTS( + SELECT * FROM kill_view + WHERE + new.victim_id = attacker_id AND + new.map = map AND + new.game_mode = game_mode AND + new.cause_of_death = cause_of_death AND + new.servername = servername AND + new.host = host + ) THEN + UPDATE kill_view SET deaths = deaths + 1 + WHERE + new.victim_id = attacker_id AND + new.map = map AND + new.game_mode = game_mode AND + new.cause_of_death = cause_of_death AND + new.servername = servername AND + new.host = host; + ELSE + INSERT INTO kill_view(deaths, kills, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance, attacker_name) + VALUES(1,0,0, new.victim_id, new.map, new.game_mode, new.cause_of_death, new.servername, new.host,0,0, new.victim_name); + END IF; + + + IF EXISTS( + SELECT * FROM kill_view + WHERE + new.victim_id = attacker_id AND + new.map = map AND + new.game_mode = game_mode AND + new.attacker_current_weapon = cause_of_death AND + new.servername = servername AND + new.host = host + ) THEN + UPDATE kill_view SET deaths_with_weapon = deaths_with_weapon + 1 + WHERE + new.victim_id = attacker_id AND + new.map = map AND + new.game_mode = game_mode AND + new.attacker_current_weapon = cause_of_death AND + new.servername = servername AND + new.host = host; + ELSE + INSERT INTO kill_view(deaths, kills, deaths_with_weapon, attacker_id, map, game_mode, cause_of_death, servername, host, max_distance, total_distance, attacker_name) + VALUES(0,0,1, new.victim_id, new.map, new.game_mode, new.attacker_current_weapon, new.servername, new.host,0,0, new.victim_name); + END IF; + + + RETURN NEW; +END; +$$ LANGUAGE PLPGSQL;`) + await pgClient.end() +} + +export async function down (db: Kysely): Promise { + +} diff --git a/src/process/onKill.ts b/src/process/onKill.ts index 0f018ed..e1b0ff0 100644 --- a/src/process/onKill.ts +++ b/src/process/onKill.ts @@ -15,7 +15,6 @@ export default async function listenKills () { pgClient.on('notification', (data) => { if (!data.payload) return const payload = JSON.parse(data.payload) - console.log(`recieved kill for ${payload.attacker_name as string}`) let killEntry = allData[payload.attacker_id] let deathEntry = allData[payload.victim_id]