Start working on course progress endpoints

This commit is contained in:
lvrossem
2023-03-30 08:02:46 -06:00
parent 3e12125c09
commit 849d2018f9
4 changed files with 26 additions and 8 deletions

View File

@@ -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 []

View File

@@ -33,3 +33,4 @@ class CourseEnum(StrEnum):
Animals = "Animals"
Colors = "Colors"
FruitsVegetables = "FruitsVegetables"
All = "All"

View File

@@ -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)

View File

@@ -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