File size: 2,492 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
from datetime import datetime
from fastapi import Depends, APIRouter, HTTPException, Query
from models import Guest, GuestCreate, GuestPublic, GuestUpdate, GuestPublicWith
from sqlmodel import Session, select
from core import crud, utils

router = APIRouter(
    prefix="/guests", 
    tags=["guests"],
    dependencies=[Depends(crud.get_current_super_user)]
    )

@router.post("/", response_model=GuestPublic)
def create_guest(*, 
                 session: Session = Depends(utils.get_session), 
                 guest: GuestCreate
                 ):
    crud.vector_exists(session, guest)
    db_guest = Guest.model_validate(guest)
    session.add(db_guest)
    session.commit()
    session.refresh(db_guest)
    return db_guest
    

@router.get("/", response_model=list[GuestPublic])
def read_guests(*,
                session: Session = Depends(utils.get_session),
                offset: int = 0,
                limit: int = Query(default=100, le=100),
                ):
    guests = session.exec(select(Guest).offset(offset).limit(limit)).all()
    return guests



@router.get("/{guest_id}", response_model=GuestPublicWith)
def read_guest(*, 
               session: Session = Depends(utils.get_session), 
               guest_id: int
               ):
    guest = session.get(Guest, guest_id)
    if not guest:
        raise HTTPException(status_code=404, detail="Guest not found")
    return guest



@router.patch("/{guest_id}", response_model=GuestPublic)
def update_guest(*, 
                session: Session = Depends(utils.get_session), 
                guest_id: int, 
                guest: GuestUpdate
                ):
    db_guest = session.get(Guest, guest_id)
    if not db_guest:
        raise HTTPException(status_code=404, detail="Guest not found")
    if guest.vector is not None:
        crud.vector_exists(session, guest)
    guest_data = guest.model_dump(exclude_unset=True)
    extra_data = {"updated_at": datetime.now()}
    db_guest.sqlmodel_update(guest_data, update=extra_data)
    session.add(db_guest)
    session.commit()
    session.refresh(db_guest)
    return db_guest


@router.delete("/{guest_id}")
def delete_guest(*, 
                 session: Session = Depends(utils.get_session), 
                 guest_id: int
                 ):
    db_guest = session.get(Guest, guest_id)
    if not db_guest:
        raise HTTPException(status_code=404, detail="Guest not found")
    session.delete(db_guest)
    session.commit()
    return {"ok": True}