Add CRUD functions and Pydantic schemas
This commit is contained in:
25
src/crud.py
Normal file
25
src/crud.py
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
|
from models import User, HighScore, CourseProgress
|
||||||
|
from . import models, schemas
|
||||||
|
|
||||||
|
|
||||||
|
def get_user(db: Session, user_id: int):
|
||||||
|
return db.query(models.User).filter(models.User.id == user_id).first()
|
||||||
|
|
||||||
|
|
||||||
|
def get_user_by_username(db: Session, username: str):
|
||||||
|
return db.query(User).filter(User.email == email).first()
|
||||||
|
|
||||||
|
|
||||||
|
def get_users(db: Session, skip: int = 0, limit: int = 100):
|
||||||
|
return db.query(User).all()
|
||||||
|
|
||||||
|
|
||||||
|
def create_user(db: Session, username: str, hashed_password: str):
|
||||||
|
db_user = models.User(username=username, hashed_password=hashed_password)
|
||||||
|
db.add(db_user)
|
||||||
|
db.commit()
|
||||||
|
db.refresh(db_user)
|
||||||
|
return db_user
|
||||||
|
|
||||||
@@ -3,7 +3,7 @@ from sqlalchemy.ext.declarative import declarative_base
|
|||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
|
||||||
# SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db"
|
# SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db"
|
||||||
SQLALCHEMY_DATABASE_URL = "postgresql://user:password@postgresserver/db"
|
SQLALCHEMY_DATABASE_URL = 'postgresql://user:password@postgresserver/wesign-dev'
|
||||||
|
|
||||||
engine = create_engine(SQLALCHEMY_DATABASE_URL)
|
engine = create_engine(SQLALCHEMY_DATABASE_URL)
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
|
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, Float
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
|
|
||||||
from .enums import MinigameEnum, CourseEnum
|
from .enums import MinigameEnum, CourseEnum
|
||||||
@@ -20,7 +20,7 @@ class HighScore(Base):
|
|||||||
__tablename__ = "high_scores"
|
__tablename__ = "high_scores"
|
||||||
|
|
||||||
high_score_id = Column(Integer, primary_key=True, index=True)
|
high_score_id = Column(Integer, primary_key=True, index=True)
|
||||||
score_value = Column(Integer, nullable=False)
|
score_value = Column(Float, nullable=False)
|
||||||
minigame = Column(Enum(MinigameEnum), nullable=False)
|
minigame = Column(Enum(MinigameEnum), nullable=False)
|
||||||
owner = Column(Integer, ForeignKey("users.user_id"))
|
owner = Column(Integer, ForeignKey("users.user_id"))
|
||||||
|
|
||||||
@@ -29,6 +29,7 @@ class CourseProgress(Base):
|
|||||||
__tablename__ = "course_progress"
|
__tablename__ = "course_progress"
|
||||||
|
|
||||||
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)
|
||||||
course = Column(Enum(CourseEnum), nullable=False)
|
course = Column(Enum(CourseEnum), nullable=False)
|
||||||
owner = Column(Integer, ForeignKey("users.user_id"))
|
owner = Column(Integer, ForeignKey("users.user_id"))
|
||||||
|
|
||||||
33
src/schemas.py
Normal file
33
src/schemas.py
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
from pydantic import BaseModel
|
||||||
|
from enums import MinigameEnum, CourseEnum
|
||||||
|
|
||||||
|
class User(BaseModel):
|
||||||
|
user_id: int
|
||||||
|
username: str
|
||||||
|
hashed_password: str
|
||||||
|
|
||||||
|
high_scores: list[HighScore] = []
|
||||||
|
course_progresses: list[CourseProgress] = []
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
orm_mode = True
|
||||||
|
|
||||||
|
|
||||||
|
class HighScore(BaseModel):
|
||||||
|
high_score_id: int
|
||||||
|
score_value: float
|
||||||
|
minigame: MinigameEnum
|
||||||
|
owner: User
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
orm_mode = True
|
||||||
|
|
||||||
|
|
||||||
|
class CourseProgress(BaseModel):
|
||||||
|
course_progress_id: int
|
||||||
|
progress_value: float
|
||||||
|
course: CourseEnum
|
||||||
|
owner: User
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
orm_mode = True
|
||||||
Reference in New Issue
Block a user