pulse-be / routers /guests.py
khawir's picture
initial commit
8ed8485
raw
history blame
2.49 kB
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}