File size: 1,853 Bytes
8ed8485 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
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} |