Files
eventspace/backend/app/crud/guest.py
Felipe Cardoso fce2f32ffb
All checks were successful
Build and Push Docker Images / changes (push) Successful in 4s
Build and Push Docker Images / build-backend (push) Successful in 52s
Build and Push Docker Images / build-frontend (push) Has been skipped
fix guest rsvp additional guests
2025-03-16 21:13:48 +01:00

51 lines
1.8 KiB
Python

from app.crud.base import CRUDBase
from app.models.guest import Guest
from app.schemas.guests import GuestCreate, GuestUpdate
from sqlalchemy.orm import Session
from typing import Optional
from app.models.guest import GuestStatus
from datetime import datetime, timezone
import uuid
class CRUDGuest(CRUDBase[Guest, GuestCreate, GuestUpdate]):
def create(self, db, obj_in: GuestCreate):
if obj_in.invitation_code is None:
obj_in.invitation_code = str(uuid.uuid4())[:8]
db_guest = Guest(
event_id=uuid.UUID(obj_in.event_id) if isinstance(obj_in.event_id, str) else obj_in.event_id, # explicit casting
invited_by=uuid.UUID(obj_in.invited_by) if isinstance(obj_in.invited_by, str) else obj_in.invited_by,
full_name=obj_in.full_name,
email=obj_in.email,
invitation_code=obj_in.invitation_code
)
db.add(db_guest)
db.commit()
db.refresh(db_guest)
return db_guest
def get_by_invitation_code(self, db: Session, invitation_code: str) -> Optional[Guest]:
return db.query(Guest).filter(Guest.invitation_code == invitation_code).first()
def update_status(self, db: Session, guest_id: uuid.UUID, status: GuestStatus, number_of_guests: int = 0):
guest = self.get(db, guest_id)
if guest:
guest.status = status
guest.actual_additional_guests = number_of_guests
guest.response_date = datetime.now(timezone.utc)
db.commit()
db.refresh(guest)
return guest
def remove(self, db: Session, *, guest_id: str) -> Guest:
guest_id = uuid.UUID(guest_id) if isinstance(guest_id, str) else guest_id
obj = db.query(self.model).get(guest_id)
db.delete(obj)
db.commit()
return obj
guest_crud = CRUDGuest(Guest)