Get started on high score creation

This commit is contained in:
lvrossem
2023-03-28 16:01:15 -06:00
parent d1c1738917
commit fa543b19e7
4 changed files with 61 additions and 13 deletions

View File

@@ -1,10 +1,11 @@
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from models import CourseProgress, HighScore, User from models import CourseProgress, HighScore, User
from schemas.highscores import HighScoreCreate
from schemas.users import UserCreate from schemas.users import UserCreate
def get_user(db: Session, user_id: int): def get_user_by_id(db: Session, user_id: int):
return db.query(User).filter(User.user_id == user_id).first() return db.query(User).filter(User.user_id == user_id).first()
@@ -22,3 +23,28 @@ def create_user(db: Session, user: UserCreate):
db.commit() db.commit()
db.refresh(db_user) db.refresh(db_user)
return db_user return db_user
def get_high_scores(db: Session):
return db.query(HighScore).all()
def create_high_score(db: Session, high_score: HighScoreCreate):
db_high_score = HighScore(
score_value=high_score.score_value,
minigame=high_score.minigame,
owner_id=high_score.owner_id,
)
db.add(db_high_score)
db.commit()
db.refresh(db_high_score)
owner = get_user_by_id(db, high_score.owner_id)
print("ID IS " + str(db_high_score.high_score_id) + " " + owner.username)
owner.high_score_ids.append(db_high_score.high_score_id)
owner.high_scores.append(db_high_score)
print("LIST OF IDS: " + str(owner.high_score_ids))
db.commit()
db.refresh(owner)
owner2 = db.query(User).filter(User.user_id == high_score.owner_id).first()
print("LIST OF IDS: " + str(owner2.high_score_ids))
return db_high_score

View File

@@ -6,7 +6,7 @@ from sqlalchemy.orm import Session
import crud import crud
from database import SessionLocal, engine from database import SessionLocal, engine
from models import Base from models import Base
from schemas import users from schemas import highscores, users
app = FastAPI() app = FastAPI()
@@ -26,6 +26,12 @@ async def root():
return {"message": "Hello world!"} return {"message": "Hello world!"}
@app.get("/users", response_model=List[users.User])
async def read_users(db: Session = Depends(get_db)):
users = crud.get_users(db)
return users
@app.post("/users", response_model=users.User) @app.post("/users", response_model=users.User)
async def create_user(user: users.UserCreate, db: Session = Depends(get_db)): async def create_user(user: users.UserCreate, db: Session = Depends(get_db)):
db_user = crud.get_user_by_username(db, username=user.username) db_user = crud.get_user_by_username(db, username=user.username)
@@ -34,7 +40,14 @@ async def create_user(user: users.UserCreate, db: Session = Depends(get_db)):
return crud.create_user(db=db, user=user) return crud.create_user(db=db, user=user)
@app.get("/users", response_model=List[users.User]) @app.get("/highscores", response_model=List[highscores.HighScore])
async def read_users(db: Session = Depends(get_db)): async def read_high_scores(db: Session = Depends(get_db)):
users = crud.get_users(db) high_scores = crud.get_high_scores(db)
return users return high_scores
@app.post("/highscores", response_model=highscores.HighScore)
async def create_high_score(
high_score: highscores.HighScoreCreate, db: Session = Depends(get_db)
):
return crud.create_high_score(db=db, high_score=high_score)

View File

@@ -1,13 +1,20 @@
from pydantic import BaseModel from pydantic import BaseModel
from src.enums import MinigameEnum from enums import MinigameEnum
class HighScore(BaseModel): class HighScoreBase(BaseModel):
high_score_id: int
score_value: float score_value: float
minigame: MinigameEnum minigame: MinigameEnum
owner_id: int owner_id: int
class HighScoreCreate(HighScoreBase):
pass
class HighScore(HighScoreBase):
high_score_id: int
class Config: class Config:
orm_mode = True orm_mode = True

View File

@@ -3,9 +3,12 @@ from typing import List
from pydantic import BaseModel from pydantic import BaseModel
class User(BaseModel): class UserBase(BaseModel):
user_id: int
username: str username: str
class User(UserBase):
user_id: int
hashed_password: str hashed_password: str
high_score_ids: List[int] = [] high_score_ids: List[int] = []
@@ -15,6 +18,5 @@ class User(BaseModel):
orm_mode = True orm_mode = True
class UserCreate(BaseModel): class UserCreate(UserBase):
username: str
password: str password: str