from fastapi import FastAPI, Depends, HTTPException from sqlalchemy.orm import Session from typing import List from models import User from schemas import UserCreate, User as UserSchema from services import SessionLocal, engine app = FastAPI() def get_db(): db = SessionLocal() try: yield db finally: db.close() @app.post("/users/", response_model=UserSchema) def create_user(user: UserCreate, db: Session = Depends(get_db)): db_user = User(**user.dict()) db.add(db_user) db.commit() db.refresh(db_user) return db_user @app.get("/users/", response_model=List[UserSchema]) def read_users(db: Session = Depends(get_db)): users = db.query(User).all() return users @app.get("/users/{user_id}", response_model=UserSchema) def read_user(user_id: int, db: Session = Depends(get_db)): db_user = db.query(User).filter(User.id == user_id).first() if db_user is None: raise HTTPException(status_code=404, detail="User not found") return db_user @app.put("/users/{user_id}", response_model=UserSchema) def update_user(user_id: int, user: UserCreate, db: Session = Depends(get_db)): db_user = db.query(User).filter(User.id == user_id).first() if db_user is None: raise HTTPException(status_code=404, detail="User not found") for key, value in user.dict().items(): setattr(db_user, key, value) db.commit() db.refresh(db_user) return db_user @app.delete("/users/{user_id}") def delete_user(user_id: int, db: Session = Depends(get_db)): db_user = db.query(User).filter(User.id == user_id).first() if db_user is None: raise HTTPException(status_code=404, detail="User not found") db.delete(db_user) db.commit() return {"message": "User deleted successfully"}