Add formatting tools
This commit is contained in:
@@ -4,3 +4,7 @@ sqlalchemy
|
||||
uvicorn[standard]
|
||||
psycopg2-binary
|
||||
fastapi_utils
|
||||
flake8
|
||||
black
|
||||
isort
|
||||
interrogate
|
||||
@@ -1,7 +1,9 @@
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from models import User, HighScore, CourseProgress
|
||||
import schemas, models
|
||||
import models
|
||||
import schemas
|
||||
from models import CourseProgress, HighScore, User
|
||||
|
||||
|
||||
def get_user(db: Session, user_id: int):
|
||||
return db.query(User).filter(User.user_id == user_id).first()
|
||||
@@ -21,4 +23,3 @@ def create_user(db: Session, user: schemas.users.UserCreate):
|
||||
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
|
||||
|
||||
# SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db"
|
||||
SQLALCHEMY_DATABASE_URL = 'postgresql://admin:WeSign123!@localhost/wesigndev'
|
||||
SQLALCHEMY_DATABASE_URL = "postgresql://admin:WeSign123!@localhost/wesigndev"
|
||||
|
||||
engine = create_engine(SQLALCHEMY_DATABASE_URL)
|
||||
|
||||
|
||||
14
src/enums.py
14
src/enums.py
@@ -1,5 +1,5 @@
|
||||
from fastapi_utils.enums import StrEnum
|
||||
from sqlalchemy.types import TypeDecorator, Enum
|
||||
from sqlalchemy.types import Enum, TypeDecorator
|
||||
|
||||
|
||||
class StrEnumType(TypeDecorator):
|
||||
@@ -18,14 +18,14 @@ class StrEnumType(TypeDecorator):
|
||||
if value is None:
|
||||
return None
|
||||
return self.enum_class(value)
|
||||
|
||||
|
||||
|
||||
class MinigameEnum(StrEnum):
|
||||
SpellingBee = 'SpellingBee'
|
||||
Hangman = 'Hangman'
|
||||
JustSign = 'JustSign'
|
||||
SpellingBee = "SpellingBee"
|
||||
Hangman = "Hangman"
|
||||
JustSign = "JustSign"
|
||||
|
||||
|
||||
class CourseEnum(StrEnum):
|
||||
Fingerspelling = 'Fingerspelling'
|
||||
Animals = 'Animals'
|
||||
Fingerspelling = "Fingerspelling"
|
||||
Animals = "Animals"
|
||||
|
||||
15
src/main.py
15
src/main.py
@@ -1,15 +1,18 @@
|
||||
from typing import List
|
||||
|
||||
from fastapi import Depends, FastAPI, HTTPException
|
||||
from sqlalchemy.orm import Session
|
||||
from models import Base
|
||||
from database import SessionLocal, engine
|
||||
from schemas import users
|
||||
from typing import List
|
||||
|
||||
import crud
|
||||
from database import SessionLocal, engine
|
||||
from models import Base
|
||||
from schemas import users
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
Base.metadata.create_all(bind=engine)
|
||||
|
||||
|
||||
def get_db():
|
||||
db = SessionLocal()
|
||||
try:
|
||||
@@ -25,6 +28,7 @@ async def root():
|
||||
print("Hello world")
|
||||
return {"message": "Hello world!"}
|
||||
|
||||
|
||||
@app.post("/users", response_model=users.User)
|
||||
async def create_user(user: users.UserCreate, db: Session = Depends(get_db)):
|
||||
db_user = crud.get_user_by_username(db, username=user.username)
|
||||
@@ -35,8 +39,5 @@ async def create_user(user: users.UserCreate, db: Session = Depends(get_db)):
|
||||
|
||||
@app.get("/users", response_model=List[users.User])
|
||||
async def read_users(db: Session = Depends(get_db)):
|
||||
print("here")
|
||||
users = crud.get_users(db)
|
||||
print(users[0].high_scores)
|
||||
return users
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, Float
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.dialects.postgresql import ARRAY
|
||||
from enum import Enum
|
||||
|
||||
from enums import MinigameEnum, CourseEnum, StrEnumType
|
||||
from sqlalchemy import Boolean, Column, Float, ForeignKey, Integer, String
|
||||
from sqlalchemy.dialects.postgresql import ARRAY
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from database import Base
|
||||
from enums import CourseEnum, MinigameEnum, StrEnumType
|
||||
|
||||
|
||||
class User(Base):
|
||||
@@ -14,9 +15,13 @@ class User(Base):
|
||||
username = Column(String, unique=True, index=True, nullable=False)
|
||||
hashed_password = Column(String, nullable=False)
|
||||
|
||||
high_scores = relationship("HighScore", back_populates="owner", cascade="all, delete", lazy="dynamic")
|
||||
course_progress = relationship("CourseProgress", back_populates="owner", cascade="all, delete", lazy="dynamic")
|
||||
|
||||
high_scores = relationship(
|
||||
"HighScore", back_populates="owner", cascade="all, delete", lazy="dynamic"
|
||||
)
|
||||
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=[])
|
||||
|
||||
@@ -34,7 +39,6 @@ class HighScore(Base):
|
||||
owner = relationship("User", back_populates="high_scores")
|
||||
|
||||
|
||||
|
||||
class CourseProgress(Base):
|
||||
__tablename__ = "course_progress"
|
||||
|
||||
@@ -43,4 +47,3 @@ class CourseProgress(Base):
|
||||
course = Column(StrEnumType(CourseEnum), nullable=False)
|
||||
owner_id = Column(Integer, ForeignKey("users.user_id"))
|
||||
owner = relationship("User", back_populates="course_progress")
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from enums import CourseEnum
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from src.enums import MinigameEnum
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import List
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class User(BaseModel):
|
||||
user_id: int
|
||||
|
||||
Reference in New Issue
Block a user