pulse-be / routers /users.py
khawir's picture
initial commit
8ed8485
raw
history blame
1.85 kB
from datetime import datetime
from fastapi import Depends, APIRouter, HTTPException, Query
from sqlmodel import Session, select
from models import User, UserCreate, UserPublic, UserUpdate, UserPublicWith
from core import crud, utils
router = APIRouter(
prefix="/users",
tags=["users"],
dependencies=[Depends(crud.get_current_super_user)]
)
@router.post("/", response_model=UserPublic)
def create_user(*, session: Session = Depends(utils.get_session), user: UserCreate):
return crud.add_user(session, user)
@router.get("/", response_model=list[UserPublic])
def read_users(*,
session: Session = Depends(utils.get_session),
offset: int = 0,
limit: int = Query(default=100, le=100),
):
users = session.exec(select(User).offset(offset).limit(limit)).all()
return users
@router.get("/{user_id}", response_model=UserPublicWith)
def read_user(*, session: Session = Depends(utils.get_session), user_id: int):
user = session.get(User, user_id)
if not user:
raise HTTPException(status_code=404, detail="User not found")
return user
@router.patch("/{user_id}", response_model=UserPublic)
def update_user(*,
session: Session = Depends(utils.get_session),
user_id: int,
user: UserUpdate
):
db_user = session.get(User, user_id)
if not db_user:
raise HTTPException(status_code=404, detail="User not found")
return crud.edit_user(session, db_user, user)
@router.delete("/{user_id}")
def delete_user(*, session: Session = Depends(utils.get_session), user_id: int):
user = session.get(User, user_id)
if not user:
raise HTTPException(status_code=404, detail="User not found")
session.delete(user)
session.commit()
return {"ok": True}