update
This commit is contained in:
@@ -323,15 +323,18 @@ def ueben_antwort(a: UebenAntwort):
|
||||
|
||||
|
||||
@app.get("/api/topics/{topic}/baustein/{baustein_id}/karten")
|
||||
def baustein_karten(topic: str, baustein_id: int):
|
||||
# Flashcards genau dieses Bausteins — NICHT faellig-gefiltert (gerade gelesen → jetzt
|
||||
# prüfen). Beantwortet wird über /api/ueben/antwort, Leitner-Spacing bleibt intakt.
|
||||
rows = db.query(
|
||||
"SELECT ar.id, ar.inhalt, a.titel, a.level, COALESCE(l.box,1) AS box"
|
||||
" FROM artefakte ar JOIN atome a ON ar.atom_id=a.id"
|
||||
" LEFT JOIN leitner l ON l.artefakt_id=ar.id"
|
||||
" WHERE a.topic=? AND a.baustein_id=? AND ar.typ='flashcard'"
|
||||
" AND ar.status='verifiziert' ORDER BY a.ord, ar.id", (topic, baustein_id))
|
||||
def baustein_karten(topic: str, baustein_id: int, alle: bool = False):
|
||||
# Absolvierte Karten (richtig beantwortet → Leitner-faellig in der Zukunft)
|
||||
# bleiben draußen — der Abruf startet nicht bei jedem Besuch von vorn.
|
||||
# alle=True zeigt den vollen Stapel (Button „Alle erneut üben").
|
||||
sql = ("SELECT ar.id, ar.inhalt, a.titel, a.level, COALESCE(l.box,1) AS box"
|
||||
" FROM artefakte ar JOIN atome a ON ar.atom_id=a.id"
|
||||
" LEFT JOIN leitner l ON l.artefakt_id=ar.id"
|
||||
" WHERE a.topic=? AND a.baustein_id=? AND ar.typ='flashcard'"
|
||||
" AND ar.status='verifiziert'")
|
||||
if not alle:
|
||||
sql += " AND COALESCE(l.faellig, date('now')) <= date('now')"
|
||||
rows = db.query(sql + " ORDER BY a.ord, ar.id", (topic, baustein_id))
|
||||
return [{**r, "inhalt": db.uj(r["inhalt"], {})} for r in rows]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user