Add CRUD functions and Pydantic schemas

This commit is contained in:
lvrossem
2023-03-27 19:48:48 +02:00
parent b16198a816
commit e9b2ea4188
4 changed files with 62 additions and 3 deletions

25
src/crud.py Normal file
View 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

View File

@@ -3,7 +3,7 @@ from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 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)

View File

@@ -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 .enums import MinigameEnum, CourseEnum
@@ -20,7 +20,7 @@ class HighScore(Base):
__tablename__ = "high_scores"
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)
owner = Column(Integer, ForeignKey("users.user_id"))
@@ -29,6 +29,7 @@ class CourseProgress(Base):
__tablename__ = "course_progress"
course_progress_id = Column(Integer, primary_key=True, index=True)
progress_value = Column(Float, nullable=False)
course = Column(Enum(CourseEnum), nullable=False)
owner = Column(Integer, ForeignKey("users.user_id"))

33
src/schemas.py Normal file
View 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