Almost there

This commit is contained in:
lvrossem
2023-04-18 07:01:12 -06:00
parent 4235395579
commit d376e39773
5 changed files with 59 additions and 62 deletions

View File

@@ -4,6 +4,8 @@ from sqlalchemy.orm import Session
from src.crud.highscores import (get_highest_high_scores,
get_most_recent_high_scores)
from src.crud.courseprogress import get_course_progress
from src.enums import CourseEnum, MinigameEnum
from src.models import CourseProgress, LearnableProgress, User
from src.schemas.courseprogress import SavedCourseProgress
@@ -65,61 +67,14 @@ def get_saved_data(db: Session, username: str):
"""Fetches all saved progress for the current user from the database"""
user = get_user_by_username(db, username)
minigames = []
courses = []
courses = get_course_progress(db, user, CourseEnum.All)
for minigame in MinigameEnum:
minigames.append(
SavedMinigameProgress(
minigame_index=minigame,
latest_scores=[
score for score in get_most_recent_high_scores(db, minigame, 10)
],
highest_scores=[
score
for score in get_highest_high_scores(db, minigame, user, 10, False)
],
)
)
course_progress_query = (
db.query(CourseProgress).filter(CourseProgress.owner_id == user.user_id).all()
)
for course_progress in course_progress_query:
learnable_progress_query = (
db.query(LearnableProgress)
.filter(
LearnableProgress.course_progress_id
== course_progress.course_progress_id
)
.all()
)
learnables = [
SavedLearnableProgress(
index=lp.index, in_use=lp.in_use, name=lp.name, progress=lp.progress
)
for lp in learnable_progress_query
]
completed_learnables = sum(
[1 if learnable.progress == 5.0 else 0 for learnable in learnables]
)
in_use_learnables = sum(
[1 if learnable.in_use else 0 for learnable in learnables]
)
total_learnables = len(learnables)
courses.append(
SavedCourseProgress(
course_index=course_progress.course,
progress=course_progress.progress,
completed_learnables=completed_learnables,
in_use_learnables=in_use_learnables,
total_learnables=total_learnables,
learnables=learnables,
latest_scores=get_most_recent_high_scores(db, minigame, 10),
highest_scores=get_highest_high_scores(db, minigame, user, 10, False),
)
)