diff --git a/src/crud.py b/src/crud.py index 870fe74..3e2ff10 100644 --- a/src/crud.py +++ b/src/crud.py @@ -2,10 +2,11 @@ from fastapi import HTTPException from sqlalchemy import desc from sqlalchemy.orm import Session -from enums import MinigameEnum +from enums import MinigameEnum, CourseEnum from models import CourseProgress, HighScore, User from schemas.highscores import HighScoreCreate from schemas.users import UserCreate, UserHighScore +from schemas.courseprogress import CourseProgressBase DEFAULT_NR_HIGH_SCORES = 10 @@ -90,3 +91,12 @@ def create_high_score(db: Session, high_score: HighScoreCreate): db.commit() db.refresh(db_high_score) return db_high_score + +def get_course_progress(db: Session, user: User, course: CourseEnum): + if course != CourseEnum.All: + course_progress = db.query(CourseProgress).filter(CourseProgress.owner_id == user.user_id, CourseProgress.course == course).first() + if course_progress: + return [CourseProgressBase(progress_value = course_progress.progress_value, course = course_progress.course)] + else: + return [CourseProgressBase(progress_value = 0, course = course)] + return [] diff --git a/src/enums.py b/src/enums.py index 11e4da0..3ec4085 100644 --- a/src/enums.py +++ b/src/enums.py @@ -33,3 +33,4 @@ class CourseEnum(StrEnum): Animals = "Animals" Colors = "Colors" FruitsVegetables = "FruitsVegetables" + All = "All" diff --git a/src/main.py b/src/main.py index bb907f1..55558ed 100644 --- a/src/main.py +++ b/src/main.py @@ -9,9 +9,9 @@ from sqlalchemy.orm import Session import crud from database import SessionLocal, engine -from enums import MinigameEnum +from enums import MinigameEnum, CourseEnum from models import Base -from schemas import highscores, users +from schemas import highscores, users, courseprogress app = FastAPI() @@ -91,7 +91,7 @@ async def get_current_user( @app.get("/protected") -async def protected_route(current_user=Depends(get_current_user)): +async def protected_route(current_user = Depends(get_current_user)): return {"message": f"Hello, {current_user}!"} @@ -117,3 +117,9 @@ async def login(user: users.UserCreate, db: Session = Depends(get_db)): } access_token = jwt.encode(access_token_payload, jwt_secret, algorithm=ALGORITHM) return {"access_token": access_token} + + +@app.get("/courseprogress", response_model=List[courseprogress.CourseProgressBase]) +async def get_course_progress(course: Optional[CourseEnum] = CourseEnum.All, current_user = Depends(get_current_user), db: Session = Depends(get_db)): + user = crud.get_user_by_username(db, current_user) + return crud.get_course_progress(db = db, user = user, course = course) diff --git a/src/schemas/courseprogress.py b/src/schemas/courseprogress.py index 994001f..d46486e 100644 --- a/src/schemas/courseprogress.py +++ b/src/schemas/courseprogress.py @@ -2,12 +2,13 @@ from pydantic import BaseModel from enums import CourseEnum - -class CourseProgress(BaseModel): - course_progress_id: int +class CourseProgressBase(BaseModel): progress_value: float course: CourseEnum - owner: int + +class CourseProgress(CourseProgressBase): + course_progress_id: int + owner_id: int class Config: orm_mode = True