Files
eventspace/backend/app/schemas/guests.py
Felipe Cardoso 270bfda1f8
All checks were successful
Build and Push Docker Images / changes (push) Successful in 4s
Build and Push Docker Images / build-backend (push) Successful in 50s
Build and Push Docker Images / build-frontend (push) Has been skipped
Add guests API with CRUD operations and tests
Introduce a new API for managing event guests, including endpoints for creating, reading, updating, deleting, and changing guest status. Added corresponding Pydantic schemas, database CRUD logic, and extensive test coverage to validate functionality. Integrated the guests API under the events router.
2025-03-15 02:09:17 +01:00

48 lines
1.4 KiB
Python

import uuid
from pydantic import BaseModel, EmailStr, ConfigDict
from datetime import datetime
from typing import Optional, Any, Dict
from app.models.guest import GuestStatus
from uuid import UUID
class GuestBase(BaseModel):
event_id: UUID
invited_by: UUID
user_id: Optional[UUID] = None
full_name: str
email: Optional[EmailStr] = None
phone: Optional[str] = None
max_additional_guests: Optional[int] = 0
dietary_restrictions: Optional[str] = None
notes: Optional[str] = None
custom_fields: Optional[Dict[str, Any]] = None
can_bring_guests: Optional[bool] = False
class GuestCreate(GuestBase):
invitation_code: str
class GuestUpdate(BaseModel):
full_name: Optional[str] = None
email: Optional[EmailStr] = None
phone: Optional[str] = None
status: Optional[GuestStatus] = None
max_additional_guests: Optional[int] = None
actual_additional_guests: Optional[int] = None
dietary_restrictions: Optional[str] = None
notes: Optional[str] = None
custom_fields: Optional[Dict[str, Any]] = None
is_blocked: Optional[bool] = None
can_bring_guests: Optional[bool] = None
class GuestRead(GuestBase):
id: UUID
status: GuestStatus
invitation_sent_at: Optional[datetime] = None
response_date: Optional[datetime] = None
actual_additional_guests: int
is_blocked: bool
model_config = ConfigDict(from_attributes=True)