From eba10638fa5675e24a81a76c73915a931d103d53 Mon Sep 17 00:00:00 2001 From: ahtlon Date: Sun, 12 Apr 2026 23:31:39 +0200 Subject: [PATCH] Better organisation --- controllers/userManager.py | 56 ++++++++++++++++++++++++++++ main.py | 57 ++--------------------------- schemas.py => schemas/user.py | 0 services.py => services/database.py | 0 4 files changed, 59 insertions(+), 54 deletions(-) create mode 100644 controllers/userManager.py rename schemas.py => schemas/user.py (100%) rename services.py => services/database.py (100%) diff --git a/controllers/userManager.py b/controllers/userManager.py new file mode 100644 index 0000000..064507c --- /dev/null +++ b/controllers/userManager.py @@ -0,0 +1,56 @@ +from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy.orm import Session +from typing import List + +from models import User +from schemas.user import UserCreate, User as UserSchema +from services.database import SessionLocal, engine + +user_router = APIRouter(tags=["users"]) + +def get_db(): + db = SessionLocal() + try: + yield db + finally: + db.close() + +@user_router.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 + +@user_router.get("/users/", response_model=List[UserSchema]) +def read_users(db: Session = Depends(get_db)): + users = db.query(User).all() + return users + +@user_router.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 + +@user_router.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 + +@user_router.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"} \ No newline at end of file diff --git a/main.py b/main.py index 200e02b..28d33bf 100644 --- a/main.py +++ b/main.py @@ -1,56 +1,5 @@ -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 +from fastapi import FastAPI +from controllers import userManager 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"} \ No newline at end of file +app.include_router(userManager.user_router) \ No newline at end of file diff --git a/schemas.py b/schemas/user.py similarity index 100% rename from schemas.py rename to schemas/user.py diff --git a/services.py b/services/database.py similarity index 100% rename from services.py rename to services/database.py