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}