Working get request for users

This commit is contained in:
lvrossem
2023-03-28 13:01:20 -06:00
parent 252d844446
commit b7f41e8596
2 changed files with 16 additions and 11 deletions

View File

@@ -1,5 +1,6 @@
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, Float from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, Float
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from sqlalchemy.dialects.postgresql import ARRAY
from enum import Enum from enum import Enum
from enums import MinigameEnum, CourseEnum, StrEnumType from enums import MinigameEnum, CourseEnum, StrEnumType
@@ -13,8 +14,14 @@ class User(Base):
username = Column(String, unique=True, index=True, nullable=False) username = Column(String, unique=True, index=True, nullable=False)
hashed_password = Column(String, nullable=False) hashed_password = Column(String, nullable=False)
high_scores = relationship("HighScore", back_populates="owner") high_scores = relationship("HighScore", back_populates="owner", cascade="all, delete", lazy="dynamic")
course_progresses = relationship("CourseProgress", back_populates="owner") course_progress = relationship("CourseProgress", back_populates="owner", cascade="all, delete", lazy="dynamic")
# add a new column to store the high_score IDs
high_score_ids = Column(ARRAY(Integer), default=[])
# add a new column to store the course_progress IDs
course_progress_ids = Column(ARRAY(Integer), default=[])
class HighScore(Base): class HighScore(Base):
@@ -23,7 +30,9 @@ class HighScore(Base):
high_score_id = Column(Integer, primary_key=True, index=True) high_score_id = Column(Integer, primary_key=True, index=True)
score_value = Column(Float, nullable=False) score_value = Column(Float, nullable=False)
minigame = Column(StrEnumType(MinigameEnum), nullable=False) minigame = Column(StrEnumType(MinigameEnum), nullable=False)
owner = Column(Integer, ForeignKey("users.user_id")) owner_id = Column(Integer, ForeignKey("users.user_id"))
owner = relationship("User", back_populates="high_scores")
class CourseProgress(Base): class CourseProgress(Base):
@@ -32,5 +41,6 @@ class CourseProgress(Base):
course_progress_id = Column(Integer, primary_key=True, index=True) course_progress_id = Column(Integer, primary_key=True, index=True)
progress_value = Column(Float, nullable=False) progress_value = Column(Float, nullable=False)
course = Column(StrEnumType(CourseEnum), nullable=False) course = Column(StrEnumType(CourseEnum), nullable=False)
owner = Column(Integer, ForeignKey("users.user_id")) owner_id = Column(Integer, ForeignKey("users.user_id"))
owner = relationship("User", back_populates="course_progress")

View File

@@ -6,12 +6,7 @@ class HighScore(BaseModel):
high_score_id: int high_score_id: int
score_value: float score_value: float
minigame: MinigameEnum minigame: MinigameEnum
owner_id: "User" owner_id: int
class Config: class Config:
orm_mode = True orm_mode = True
# It's ugly, but I have no choice
from users import User
HighScore.update_forward_refs()