import express from "express"; import { INFLUXDB_BUCKET, InfluxQueryAPI } from "../index"; const app = express(); const port = process.env.PORT || 3000; // Query to get the player count history for tge last 24 hours in 1 hour intervals const getPlayerHistoryQuery = `from(bucket: "${INFLUXDB_BUCKET}") |> range(start: -24h) |> filter(fn: (r) => r["_measurement"] == "scoresaber") |> filter(fn: (r) => r["_field"] == "value") |> filter(fn: (r) => r["type"] == "player_count") |> aggregateWindow(every: 1h, fn: mean) |> yield() `; app.get("/", (req, res) => { res.send("Hello!"); }); app.get("/analytics", async (req, res) => { const before = new Date().getTime(); const rows = await InfluxQueryAPI.collectRows(getPlayerHistoryQuery); let history = rows.map((row: any) => ({ time: row._time, value: row._value !== null ? row._value.toFixed(0) : null, })); history = history.sort( (a: any, b: any) => new Date(a.time).getTime() - new Date(b.time).getTime() ); return res.json({ serverTimeTaken: new Date().getTime() - before + "ms", history: history, }); }); app.listen(port, () => { console.log(`API Server is running on http://localhost:${port}`); });