Added history
This commit is contained in:
parent
d63cb4ee06
commit
0627dfb29a
1 changed files with 55 additions and 1 deletions
56
main.py
56
main.py
|
|
@ -3,7 +3,7 @@ import json
|
||||||
import sqlite3
|
import sqlite3
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
from fastapi import FastAPI, Header, HTTPException
|
from fastapi import FastAPI, Header, HTTPException, Query
|
||||||
from fastapi.responses import JSONResponse
|
from fastapi.responses import JSONResponse
|
||||||
from fastapi.routing import APIRoute
|
from fastapi.routing import APIRoute
|
||||||
from fastapi.staticfiles import StaticFiles
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
|
@ -97,6 +97,60 @@ def get_live_players():
|
||||||
]
|
]
|
||||||
|
|
||||||
return JSONResponse(content={"players": players})
|
return JSONResponse(content={"players": players})
|
||||||
|
@app.get("/history/")
|
||||||
|
@app.get("/history")
|
||||||
|
def get_history(
|
||||||
|
from_ts: str | None = Query(None, alias="from"),
|
||||||
|
to_ts: str | None = Query(None, alias="to"),
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Returns a time‐ordered list of telemetry snapshots:
|
||||||
|
- timestamp: ISO8601 string
|
||||||
|
- character_name: str
|
||||||
|
- kills: cumulative kill count (int)
|
||||||
|
- kph: kills_per_hour (float)
|
||||||
|
"""
|
||||||
|
conn = sqlite3.connect(DB_FILE)
|
||||||
|
conn.row_factory = sqlite3.Row
|
||||||
|
|
||||||
|
# Build the base query
|
||||||
|
sql = """
|
||||||
|
SELECT
|
||||||
|
timestamp,
|
||||||
|
character_name,
|
||||||
|
kills,
|
||||||
|
CAST(kills_per_hour AS REAL) AS kph
|
||||||
|
FROM telemetry_log
|
||||||
|
"""
|
||||||
|
params: list[str] = []
|
||||||
|
conditions: list[str] = []
|
||||||
|
|
||||||
|
# Add optional filters
|
||||||
|
if from_ts:
|
||||||
|
conditions.append("timestamp >= ?")
|
||||||
|
params.append(from_ts)
|
||||||
|
if to_ts:
|
||||||
|
conditions.append("timestamp <= ?")
|
||||||
|
params.append(to_ts)
|
||||||
|
if conditions:
|
||||||
|
sql += " WHERE " + " AND ".join(conditions)
|
||||||
|
|
||||||
|
sql += " ORDER BY timestamp"
|
||||||
|
|
||||||
|
rows = conn.execute(sql, params).fetchall()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
data = [
|
||||||
|
{
|
||||||
|
"timestamp": row["timestamp"],
|
||||||
|
"character_name":row["character_name"],
|
||||||
|
"kills": row["kills"],
|
||||||
|
"kph": row["kph"],
|
||||||
|
}
|
||||||
|
for row in rows
|
||||||
|
]
|
||||||
|
return JSONResponse(content={"data": data})
|
||||||
|
|
||||||
|
|
||||||
# -------------------- static frontend ---------------------------
|
# -------------------- static frontend ---------------------------
|
||||||
app.mount("/", StaticFiles(directory="static", html=True), name="static")
|
app.mount("/", StaticFiles(directory="static", html=True), name="static")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue