Files
ToneAPI_backend/src/client/process/processWeapon.ts
T

43 lines
1.4 KiB
TypeScript

/**
* This file contains all functions related to population of the REDIS database for weapons.
*/
import cache from '../../cache/redis'
import { getWeaponReport } from '../../cache/cacheUtils'
/**
* Combines weapons reports in a readable json string.
*
* ProcessWeaponReports must be called manually before this function !
*
* Inputs `SET` `[servers:{serverId}:][players:{playerId}:]weapons`
*
* Outputs `STRING` `[servers:{serverId}:][players:{playerId}:]weapons:processedList`
* @param server optional server filter
* @param player optional player filter
* @returns
*/
export async function createWeaponJson(server?: number, player?: string) {
const serverPrefix = server ? `servers:${server}:` : ''
const playerPrefix = player ? `players:${player}:` : ''
const cacheLocation = serverPrefix + playerPrefix + `weapons`
const weapons = await cache.SMEMBERS(cacheLocation)
const promises: Promise<any>[] = []
const data: {
[weaponId: string]: {
[weaponData: string]: string
}
} = {}
weapons.forEach((wpn) => {
promises.push(
(async () => {
const weaponData = await getWeaponReport(wpn, server, player)
if (Object.keys(weaponData).length > 0) {
data[wpn] = weaponData
}
})()
)
})
await Promise.all(promises)
return await cache.SET(cacheLocation + `:processedList`, JSON.stringify(data))
}