diff --git a/src/main.py b/src/main.py index d786432..813da20 100644 --- a/src/main.py +++ b/src/main.py @@ -1,7 +1,29 @@ -from fastapi import FastAPI +from fastapi import Depends, FastAPI, HTTPException +from sqlalchemy.orm import Session +from models import Base +from database import SessionLocal, engine +from schemas import UserCreate +import crud app = FastAPI() +Base.metadata.create_all(bind=engine) + +def get_db(): + db = SessionLocal() + try: + yield db + finally: + db.close() + + +@app.post("/users/", response_model=schemas.User) +def create_user(user: UserCreate, db: Session = Depends(get_db)): + db_user = crud.get_user_by_email(db, email=user.email) + if db_user: + raise HTTPException(status_code=400, detail="Email already registered") + return crud.create_user(db=db, user=user) + @app.get("/") async def root(): diff --git a/src/models.py b/src/models.py index 4728139..d3aaf93 100644 --- a/src/models.py +++ b/src/models.py @@ -1,8 +1,8 @@ from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, Float from sqlalchemy.orm import relationship -from .enums import MinigameEnum, CourseEnum -from .database import Base +from enums import MinigameEnum, CourseEnum +from database import Base class User(Base): diff --git a/src/schemas.py b/src/schemas.py index 9472883..0f084f2 100644 --- a/src/schemas.py +++ b/src/schemas.py @@ -13,6 +13,11 @@ class User(BaseModel): orm_mode = True +class UserCreate(BaseModel): + username: str + password: str + + class HighScore(BaseModel): high_score_id: int score_value: float