big refactor for lots of filtering

This commit is contained in:
2023-03-15 17:29:48 +01:00
parent c57e7fa556
commit afdd4f3fc6
7 changed files with 488 additions and 130 deletions
+14 -12
View File
@@ -16,7 +16,7 @@ const { count, max, avg } = db.fn
* @param player optional player filter
* @returns
*/
export async function populateWeaponSet(server?: number, player?: number) {
export async function populateWeaponSet(server?: number, player?: string) {
const serverPrefix = server ? `servers:${server}:` : ''
const playerPrefix = player ? `players:${player}:` : ''
const cacheLocation = serverPrefix + playerPrefix + `weapons`
@@ -37,8 +37,8 @@ export async function populateWeaponSet(server?: number, player?: number) {
}
if (player) {
query = query
.where('attacker_id', '=', player.toString())
.orWhere('victim_id', '=', player.toString())
.where('attacker_id', '=', player)
.orWhere('victim_id', '=', player)
}
const newData = await query.execute()
if (newData.length == 0) {
@@ -71,7 +71,7 @@ export async function populateWeaponSet(server?: number, player?: number) {
export async function processWeaponReport(
weapon: string,
server?: number,
player?: number
player?: string
) {
if (weapon == 'last_entry' || weapon == 'processedList') {
console.error('Weapon cannot be ' + weapon)
@@ -93,15 +93,17 @@ export async function processWeaponReport(
.as('last_entry')
])
.where('cause_of_death', '=', weapon)
.whereRef('attacker_id', '!=', 'victim_id')
.where('kill.id', '>', last_entry)
.groupBy('cause_of_death')
if (server) {
query = query.where('server', '=', server)
}
if (player) {
query = query.where('attacker_id', '=', player.toString())
query = query.where('attacker_id', '=', player)
}
const newData = await query.execute()
if (newData.length == 0) {
return
}
@@ -137,7 +139,9 @@ async function processMax(
key: 'max_kill_distance',
newmax: number
) {
const oldMax = Number(await cache.HGET(cacheLocation, key)) | 0
const oldMax = Number(await cache.HGET(cacheLocation, key)) || -1
newmax = newmax || 0
if (!oldMax || !newmax) console.log(oldMax, newmax)
if (oldMax < newmax) await cache.HSET(cacheLocation, key, newmax)
}
@@ -153,10 +157,11 @@ async function processMax(
* @param player optional player filter
* @returns
*/
export async function processWeaponList(server?: number, player?: number) {
export async function processWeaponList(server?: number, player?: string) {
const serverPrefix = server ? `servers:${server}:` : ''
const playerPrefix = player ? `players:${player}:` : ''
const weapons = await cache.SMEMBERS('weapons')
const cacheLocation = serverPrefix + playerPrefix + `weapons`
const weapons = await cache.SMEMBERS(cacheLocation)
const promises: Promise<any>[] = []
const data: {
[weaponId: string]: {
@@ -174,8 +179,5 @@ export async function processWeaponList(server?: number, player?: number) {
)
})
await Promise.all(promises)
return await cache.SET(
serverPrefix + playerPrefix + `weapons:processedList`,
JSON.stringify(data)
)
return await cache.SET(cacheLocation + `:processedList`, JSON.stringify(data))
}