Add "Games Played" column in deck list

This commit is contained in:
Jack Jackson 2024-06-28 18:12:52 -07:00
parent 87a336787c
commit 7545966aed
2 changed files with 19 additions and 1 deletions

View File

@ -1,6 +1,6 @@
from fastapi import APIRouter, Depends, HTTPException, Request
from fastapi.responses import HTMLResponse
from sqlalchemy import and_, or_
from sqlalchemy import and_, or_, func
from sqlalchemy.orm import Session
from app.sql import models
@ -70,6 +70,22 @@ def deck_create_html(request: Request, db=Depends(get_db)):
@html_router.get("/list")
def decks_html(request: Request, db=Depends(get_db)):
decks = list_decks(db=db)
for deck in decks:
setattr(
deck,
"games_played",
db.query(func.count())
.select_from(models.Game)
.filter(
or_(
*[
getattr(models.Game, f"deck_id_{i+1}") == deck.id
for i in range(6)
]
)
)
.scalar(),
)
return jinja_templates.TemplateResponse(
request, "decks/list.html", {"decks": decks}
)

View File

@ -12,6 +12,7 @@
<tr>
<th>Deck Name</th>
<th>Owner</th>
<th>Games Played</th>
</tr>
{% for deck in decks %}
<tr>
@ -19,6 +20,7 @@
<a href="/deck/{{ deck.id }}">{{ deck.name }}</a>
</td>
<td>{{ deck.owner.name }}</td>
<td>{{ deck.games_played }}</td>
</tr>
{% endfor %}
</table>