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} |