clock on data process, ready for v1

This commit is contained in:
2023-03-13 20:03:02 +01:00
parent 600ca5112d
commit 11cb2a2b13
9 changed files with 92 additions and 34 deletions
+11 -10
View File
@@ -1,23 +1,24 @@
import { Router } from 'express'
import serverWeapons from './serverWeapons'
import playerWeapons from './playerWeapons'
import serverPlayers from './serverPlayers'
import player from './player'
import serverWeapons from './routes/serverWeapons'
import playerWeapons from './routes/playerWeapons'
import serverPlayers from './routes/serverPlayers'
import serverList from './routes/serverList'
import player from './routes/player'
const router = Router()
//timeout middleware ?
router.get('/*', (req, res, next) => {
next()
})
router.get('/weapons/', (req, res, next) => {})
//router.get('/weapons/', (req, res, next) => {})
router.get('/maps/', (req, res, next) => {})
//router.get('/maps/', (req, res, next) => {})
router.get('/players', (req, res, next) => {})
router.get('/players/:playerId', (req, res, next) => {})
//router.get('/players', (req, res, next) => {})
//router.get('/players/:playerId', (req, res, next) => {})
router.get('/servers/', (req, res, next) => {})
router.get('/servers/:serverId/', (req, res, next) => {})
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', playerWeapons)
+35
View File
@@ -0,0 +1,35 @@
import db from '../db/db'
import cache from '../cache/redis'
import { processServerPlayers } from './routes/serverPlayers'
import { processServerWeapons } from './routes/serverWeapons'
import { processPlayerWeapons } from './routes/playerWeapons'
import { processPlayerReport } from './routes/player'
async function processAll() {
const servers = await db.selectFrom('server').selectAll().execute()
const promises: Promise<any>[] = []
servers.forEach((e) => {
promises.push(processServer(e.id))
})
await Promise.all(promises)
setTimeout(processAll, 60000)
}
async function processServer(server: number) {
await processServerPlayers(server)
const promises: Promise<any>[] = []
promises.push(processServerWeapons(server))
const players = await cache.SMEMBERS(`servers:${server}:players`)
players.forEach((player) => {
promises.push(processPlayer(server, Number(player)))
})
await Promise.all(promises)
}
async function processPlayer(server: number, player: number) {
const promises: Promise<any>[] = []
promises.push(processPlayerWeapons(server, player))
promises.push(processPlayerReport(server, player))
}
export default processAll
@@ -1,9 +1,9 @@
import { RequestHandler } from 'express'
import { param } from 'express-validator'
import { validateErrors } from '../common'
import cache from '../cache/redis'
import { validateErrors } from '../../common'
import cache from '../../cache/redis'
import { sql } from 'kysely'
import db from '../db/db'
import db from '../../db/db'
import { getPlayerWeapons } from './playerWeapons'
const { count, max, min, avg } = db.fn
@@ -14,7 +14,7 @@ const middlewares: RequestHandler[] = [
async (req, res) => {
const server = Number(req.params.serverId)
const player = Number(req.params.playerId)
await processPlayerReport(server, player)
//await processPlayerReport(server, player)
const data = await getPlayerReport(server, player)
const weapons = await getPlayerWeapons(server, player)
res.status(200).send({ ...data, weapons })
@@ -27,7 +27,7 @@ async function getPlayerReport(server: number, player: number) {
return data
}
async function processPlayerReport(server: number, player: number) {
export async function processPlayerReport(server: number, player: number) {
let last_entry =
Number(
await cache.HGET(`servers:${server}:players:${player}`, 'last_entry')
@@ -85,7 +85,6 @@ async function processPlayerReport(server: number, player: number) {
.orderBy('kills', 'desc')
.execute()
//if no new kills
console.log(newData)
if (newData.length == 0) {
return
}
@@ -96,7 +95,7 @@ async function processPlayerReport(server: number, player: number) {
cache.HSET(
`servers:${server}:players:${player}`,
key.toString(),
value.toString()
(value || '').toString()
)
)
})
@@ -1,9 +1,9 @@
import { RequestHandler } from 'express'
import { param } from 'express-validator'
import { validateErrors } from '../common'
import cache from '../cache/redis'
import { validateErrors } from '../../common'
import cache from '../../cache/redis'
import { sql } from 'kysely'
import db from '../db/db'
import db from '../../db/db'
const { count, max, avg } = db.fn
@@ -13,7 +13,7 @@ const middlewares: RequestHandler[] = [
async (req, res) => {
const server = Number(req.params.serverId)
const player = Number(req.params.playerId)
await processPlayerWeapons(server, player)
//await processPlayerWeapons(server, player)
const data = await getPlayerWeapons(server, player)
res.status(200).send(data)
}
@@ -51,7 +51,7 @@ export async function getPlayerWeapons(server: number, player: number) {
return data
}
async function processPlayerWeapons(server: number, player: number) {
export async function processPlayerWeapons(server: number, player: number) {
let last_entry =
Number(
await cache.HGET(
+17
View File
@@ -0,0 +1,17 @@
import { RequestHandler } from 'express'
import { param } from 'express-validator'
import { validateErrors } from '../../common'
import db from '../../db/db'
const middlewares: RequestHandler[] = [
async (req, res) => {
const data = await db.selectFrom('server').selectAll().execute()
res.status(200).send(
data.map((e) => {
return { name: e.name, id: e.id, description: e.description }
})
)
}
]
export default middlewares
@@ -1,9 +1,9 @@
import { RequestHandler } from 'express'
import { param } from 'express-validator'
import { validateErrors } from '../common'
import cache from '../cache/redis'
import { validateErrors } from '../../common'
import cache from '../../cache/redis'
import { sql } from 'kysely'
import db from '../db/db'
import db from '../../db/db'
const { count, max } = db.fn
@@ -12,7 +12,7 @@ const middlewares: RequestHandler[] = [
validateErrors,
async (req, res) => {
const server = Number(req.params.serverId)
await processServerPlayers(server)
//await processServerPlayers(server)
let data = await getServerPlayers(server)
res.status(200).send(data)
}
@@ -40,7 +40,7 @@ async function getServerPlayers(server: number) {
return data
}
async function processServerPlayers(server: number) {
export async function processServerPlayers(server: number) {
let last_entry =
Number(await cache.GET(`servers:${server}:players:last_entry`)) || 0
const newData = await db
@@ -1,9 +1,9 @@
import { RequestHandler } from 'express'
import { param } from 'express-validator'
import { validateErrors } from '../common'
import cache from '../cache/redis'
import { validateErrors } from '../../common'
import cache from '../../cache/redis'
import { sql } from 'kysely'
import db from '../db/db'
import db from '../../db/db'
const { count, max, avg } = db.fn
@@ -12,7 +12,7 @@ const middlewares: RequestHandler[] = [
validateErrors,
async (req, res) => {
const server = Number(req.params.serverId)
await processServerWeapons(server)
//await processServerWeapons(server)
const data = await getServerWeapons(server)
res.status(200).send(data)
}
@@ -43,7 +43,7 @@ export async function getServerWeapons(server: number) {
return data
}
async function processServerWeapons(server: number) {
export async function processServerWeapons(server: number) {
let last_entry =
Number(await cache.HGET(`servers:${server}:weapons`, 'last_entry')) || 0
const newData = await db
+5 -2
View File
@@ -5,6 +5,7 @@ import cors from 'cors'
import client from './client/client'
import { dbReady } from './db/db'
import { cacheReady } from './cache/redis'
import processAll from './client/process'
const app = express()
const port = 3001
@@ -20,8 +21,10 @@ app.use('/v1/client', client)
dbReady().then((e) => {
cacheReady().then((e) => {
app.listen(port, '0.0.0.0', () => {
console.log(`Example app listening on port ${port}`)
processAll().then((e) => {
app.listen(port, '0.0.0.0', () => {
console.log(`Example app listening on port ${port}`)
})
})
})
})
+3
View File
@@ -14,6 +14,9 @@ const db = new Kysely<Database>({
})
}),
log(event) {
if (process.env.ENVIRONMENT != 'production') {
return
}
if (event.level === 'query') {
console.log(event.query.sql)
console.log(event.query.parameters)