from typing import List from fastapi import Depends, FastAPI, HTTPException from sqlalchemy.orm import Session 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: yield db finally: db.close() @app.get("/") async def root(): 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) if db_user: raise HTTPException(status_code=400, detail="Username already registered") return crud.create_user(db=db, user=user) @app.get("/users", response_model=List[users.User]) async def read_users(db: Session = Depends(get_db)): users = crud.get_users(db) return users