Start working on course progress endpoints
This commit is contained in:
12
src/crud.py
12
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 []
|
||||
|
||||
@@ -33,3 +33,4 @@ class CourseEnum(StrEnum):
|
||||
Animals = "Animals"
|
||||
Colors = "Colors"
|
||||
FruitsVegetables = "FruitsVegetables"
|
||||
All = "All"
|
||||
|
||||
12
src/main.py
12
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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user