Files
ToneAPI_backend/src/process/onKill.ts
T

57 lines
1.5 KiB
TypeScript

import { Client } from 'pg'
import { allData } from './process'
export 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 default async function listenKills () {
await pgClient.connect()
await pgClient.query('LISTEN new_kill')
pgClient.on('notification', (data) => {
if (!data.payload) return
const payload = JSON.parse(data.payload)
let killEntry = allData[payload.attacker_id]
let deathEntry = allData[payload.victim_id]
if (!killEntry) {
killEntry = {
kills: 0,
deaths: 0,
max_distance: 0,
total_distance: 0,
deaths_while_equipped: 0,
username: payload.attacker_name
}
allData[payload.attacker_id] = killEntry
}
if (!deathEntry) {
deathEntry = {
kills: 0,
deaths: 0,
max_distance: 0,
total_distance: 0,
deaths_while_equipped: 0,
username: payload.attacker_name
}
allData[payload.victim_id] = deathEntry
}
if (payload.victim_id !== payload.attacker_id) {
killEntry.kills++
killEntry.total_distance = Number(killEntry.total_distance) + Number(payload.distance)
killEntry.max_distance = Math.max(killEntry.max_distance || 0, payload.distance)
}
deathEntry.deaths++
deathEntry.deaths_while_equipped++
deathEntry.username = payload.victim_name
killEntry.username = payload.attacker_name
})
return pgClient
}