Support filtering for graph (no frontend support yet)

This commit is contained in:
Jack Jackson 2024-07-29 11:04:13 -07:00
parent fbdc98f967
commit dee0c26260
2 changed files with 6 additions and 12 deletions

View File

@ -1,4 +1,5 @@
from collections import defaultdict
from typing import Optional
from fastapi import APIRouter, Depends, Request
from fastapi.responses import HTMLResponse
@ -16,7 +17,7 @@ html_router = APIRouter(
@api_router.get("/graph")
def stats_graph_api(db=Depends(get_db)):
def stats_graph_api(deck_ids: Optional[str] = None, db=Depends(get_db)):
# TODO - parallelize? (Probably not worth it :P )
# SO Answer on row_number: https://stackoverflow.com/a/38160409/1040915
@ -34,8 +35,11 @@ def stats_graph_api(db=Depends(get_db)):
.outerjoin(models.EloScore, models.Deck.id == models.EloScore.deck_id)
.join(models.Game, models.EloScore.after_game_id == models.Game.id)
.add_column(row_number_column)
.subquery()
)
if deck_ids is not None:
sub_query = sub_query.filter(models.Deck.id.in_(deck_ids.split(",")))
sub_query = sub_query.subquery()
query = db.query(sub_query).filter(sub_query.c.row_number == 1)
results = query.all()

View File

@ -1,14 +1,4 @@
$(document).ready(function() {
const data = [
{ year: 2010, count: 10 },
{ year: 2011, count: 20 },
{ year: 2012, count: 15 },
{ year: 2013, count: 25 },
{ year: 2014, count: 22 },
{ year: 2015, count: 30 },
{ year: 2016, count: 28 },
];
fetch('/api/stats/graph')
.then(response => response.json())
.then(response => {