Get started on high score creation
This commit is contained in:
28
src/crud.py
28
src/crud.py
@@ -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
|
||||||
|
|||||||
23
src/main.py
23
src/main.py
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user