Working get request for users
This commit is contained in:
@@ -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")
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
|
||||||
Reference in New Issue
Block a user