This commit is contained in:
team3
2026-06-15 15:43:32 +02:00
parent 47be019f02
commit 44e04315cc
5 changed files with 80 additions and 48 deletions

View File

@@ -414,17 +414,22 @@ async def set_baustein_absolviert(topic: str, baustein: str) -> bool:
return cursor.rowcount > 0
async def list_baustein_absolviert_all() -> dict[str, set[str]]:
"""Alle absolvierten Bausteine in einem Query: topic → Baustein-Titel."""
async def list_baustein_levels_all() -> dict[str, dict[str, set[str]]]:
"""Bausteine je Meilenstein in EINER Query: {"absolviert"/"verstanden"/"gemeistert": {topic → {Titel}}}."""
db = await get_db()
cursor = await db.execute(
"SELECT topic, baustein FROM baustein_progress WHERE absolviert IS NOT NULL"
"SELECT topic, baustein, absolviert, verstanden, gemeistert FROM baustein_progress"
)
rows = await cursor.fetchall()
out: dict[str, set[str]] = {}
for topic, baustein in rows:
out.setdefault(topic, set()).add(baustein)
return out
levels: dict[str, dict[str, set[str]]] = {"absolviert": {}, "verstanden": {}, "gemeistert": {}}
for topic, baustein, absolviert, verstanden, gemeistert in rows:
if absolviert is not None:
levels["absolviert"].setdefault(topic, set()).add(baustein)
if verstanden is not None:
levels["verstanden"].setdefault(topic, set()).add(baustein)
if gemeistert is not None:
levels["gemeistert"].setdefault(topic, set()).add(baustein)
return levels
async def delete_baustein_daten(topic: str) -> None: