big refactor for lots of filtering
This commit is contained in:
+69
-67
@@ -1,91 +1,93 @@
|
||||
import { Router } from 'express'
|
||||
import { param } from 'express-validator'
|
||||
import { param, query } from 'express-validator'
|
||||
import { validateErrors } from '../common'
|
||||
import serverPlayers from './routes/serverPlayers'
|
||||
import serverList from './routes/serverList'
|
||||
import player from './routes/player'
|
||||
import { getWeaponList, getWeaponReport } from '../cache/cacheUtils'
|
||||
import {
|
||||
getWeaponList,
|
||||
getWeaponReport,
|
||||
getPlayerReport,
|
||||
getPlayerList
|
||||
} from '../cache/cacheUtils'
|
||||
const router = Router()
|
||||
//timeout middleware ?
|
||||
router.get('/*', (req, res, next) => {
|
||||
next()
|
||||
})
|
||||
|
||||
router.get('/weapons/', async (req, res) => {
|
||||
const data = JSON.parse((await getWeaponList()) || '{}')
|
||||
res.status(200).send(data)
|
||||
})
|
||||
|
||||
router.get(
|
||||
'/weapons/:weaponId',
|
||||
param(['weaponId']).exists().isString(),
|
||||
query(['player', 'server']).optional().toInt().isInt(),
|
||||
validateErrors,
|
||||
async (req, res) => {
|
||||
const weapon = req.params.weaponId
|
||||
const data = await getWeaponReport(weapon)
|
||||
const data = await getWeaponReport(
|
||||
req.params.weaponId,
|
||||
Number(req.query.server) || undefined,
|
||||
req.query.player?.toString()
|
||||
)
|
||||
res.status(200).send(data)
|
||||
}
|
||||
)
|
||||
|
||||
router.get(
|
||||
'/weapons/',
|
||||
query(['player', 'server']).optional().toInt().isInt(),
|
||||
validateErrors,
|
||||
async (req, res) => {
|
||||
const data = await getWeaponList(
|
||||
req.query.server?.toString(),
|
||||
req.query.player?.toString()
|
||||
)
|
||||
res.status(200).send(data)
|
||||
}
|
||||
)
|
||||
|
||||
router.get(
|
||||
'/players/:playerId',
|
||||
param(['playerId']).exists().toInt().isInt(),
|
||||
query(['server']).optional().toInt().isInt(),
|
||||
query('weapon').optional().isString(),
|
||||
validateErrors,
|
||||
async (req, res) => {
|
||||
const data = await getPlayerReport(
|
||||
req.params.playerId,
|
||||
Number(req.query.server) || undefined,
|
||||
req.query.weapon?.toString()
|
||||
)
|
||||
if (!req.query.weapon) {
|
||||
const weapons = await getWeaponList(
|
||||
req.query.server?.toString(),
|
||||
req.params.playerId
|
||||
)
|
||||
data.weapons = weapons
|
||||
} else {
|
||||
data.weapons = (await getWeaponReport(
|
||||
req.query.weapon.toString(),
|
||||
Number(req.query.server) || undefined,
|
||||
req.params.playerId
|
||||
)) as any
|
||||
}
|
||||
res.status(200).send(data)
|
||||
}
|
||||
)
|
||||
|
||||
router.get(
|
||||
'/players/',
|
||||
query(['server']).optional().toInt().isInt(),
|
||||
query('weapon').optional().isString(),
|
||||
validateErrors,
|
||||
async (req, res) => {
|
||||
const data = await getPlayerList(
|
||||
Number(req.query.server) || undefined,
|
||||
req.query.weapon?.toString()
|
||||
)
|
||||
res.status(200).send(data)
|
||||
}
|
||||
)
|
||||
|
||||
//router.get('/maps/', (req, res, next) => {})
|
||||
|
||||
//router.get('/players', (req, res, next) => {})
|
||||
//router.get('/players/:playerId', (req, res, next) => {})
|
||||
|
||||
router.get('/players/:playerId/weapons')
|
||||
|
||||
router.get('/servers/', serverList)
|
||||
//router.get('/servers/:serverId/', (req, res, next) => {})
|
||||
router.get('/servers/:serverId/players', serverPlayers)
|
||||
//router.get('/servers/:serverId/players/:playerId', player)
|
||||
|
||||
router.get(
|
||||
'/servers/:serverId/players/:playerId/weapons',
|
||||
param(['serverId', 'playerId']).exists().toInt().isInt(),
|
||||
validateErrors,
|
||||
async (req, res) => {
|
||||
const data = JSON.parse(
|
||||
(await getWeaponList(req.params.serverId, req.params.playerId)) || '{}'
|
||||
)
|
||||
res.status(200).send(data)
|
||||
}
|
||||
)
|
||||
|
||||
router.get(
|
||||
'/servers/:serverId/players/:playerId/weapons:weaponId',
|
||||
param(['serverId', 'playerId, weaponId']).exists().toInt().isInt(),
|
||||
validateErrors,
|
||||
async (req, res) => {
|
||||
const data = getWeaponReport(
|
||||
req.params.weaponId,
|
||||
Number(req.params.serverId),
|
||||
Number(req.params.playerId)
|
||||
)
|
||||
res.status(200).send(data)
|
||||
}
|
||||
)
|
||||
|
||||
router.use(
|
||||
'/servers/:serverId/weapons',
|
||||
param(['serverId']).exists().toInt().isInt(),
|
||||
validateErrors,
|
||||
async (req, res) => {
|
||||
const data = JSON.parse((await getWeaponList(req.params.serverId)) || '{}')
|
||||
res.status(200).send(data)
|
||||
}
|
||||
)
|
||||
|
||||
router.use(
|
||||
'/servers/:serverId/weapons',
|
||||
param(['serverId']).exists().toInt().isInt(),
|
||||
validateErrors,
|
||||
async (req, res) => {
|
||||
const data = getWeaponReport(
|
||||
req.params.weaponId,
|
||||
Number(req.params.serverId)
|
||||
)
|
||||
res.status(200).send(data)
|
||||
}
|
||||
)
|
||||
|
||||
export default router
|
||||
|
||||
Reference in New Issue
Block a user