Files
gatekeeper/app/controllers/userManager.py

47 lines
1.8 KiB
Python

from fastapi import APIRouter, HTTPException, Depends
from sqlmodel import Session, select
from typing import List
from ..model.models import UserResponse, UserCreate, UserDB, UserUpdate
from ..services.database import engine, get_session, add_and_refresh
user_router = APIRouter(tags=["Users"])
@user_router.post("/users/", response_model=UserResponse)
def create_user(*, db: Session = Depends(get_session), user: UserCreate):
print("creating user with data ", user)
db_user = UserDB.model_validate(user)
return add_and_refresh(db, db_user)
@user_router.get("/users/", response_model=List[UserResponse])
def read_users(*, db: Session = Depends(get_session)):
users = db.exec(select(UserDB)).all()
return users
@user_router.get("/users/{user_id}", response_model=UserResponse)
def read_user(*, db: Session = Depends(get_session), user_id: int):
db_user = db.get(UserDB, user_id)
if db_user is None:
raise HTTPException(status_code=404, detail="User not found")
return db_user
@user_router.patch("/users/{user_id}", response_model=UserResponse)
def update_user(*, db: Session = Depends(get_session), user_id: int, user: UserUpdate):
db_user = db.get(UserDB, user_id)
if db_user is None:
raise HTTPException(status_code=404, detail="User not found")
user_data = user.model_dump(exclude_unset=True)
db_user.sqlmodel_update(user_data)
db.add(db_user)
db.commit()
db.refresh(db_user)
return db_user
@user_router.delete("/users/{user_id}")
def delete_user(*, db: Session = Depends(get_session), user_id: int):
db_user = db.get(UserDB, user_id)
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"}