Files
eventspace/backend/app/schemas/rsvp.py
Felipe Cardoso 632a762d64 Add CRUD and schema for RSVP management
Introduce CRUD operations and Pydantic schemas to manage RSVP entries, including creation, updates, retrieval, and deletion. This enables comprehensive handling of RSVP data with validation and support for guest and event IDs.
2025-03-15 02:20:36 +01:00

61 lines
1.6 KiB
Python

from uuid import UUID
from typing import Optional, Any
from pydantic import BaseModel, Field, ConfigDict
from datetime import datetime
from enum import Enum
class RSVPStatus(str, Enum):
ATTENDING = "attending"
NOT_ATTENDING = "not_attending"
MAYBE = "maybe"
class RSVPSchemaBase(BaseModel):
status: RSVPStatus = Field(...)
number_of_guests: int = Field(default=1, ge=1)
response_message: str | None = None
dietary_requirements: str | None = None
additional_info: Any = None
class RSVPSchemaCreate(RSVPSchemaBase):
event_id: UUID
guest_id: UUID
number_of_guests: int = Field(default=1, ge=1)
class RSVPSchemaUpdate(BaseModel):
status: RSVPStatus | None = None
number_of_guests: int | None = Field(default=None, ge=1)
response_message: str | None = None
dietary_requirements: str | None = None
additional_info: dict[str, Any] | None = None
model_config = ConfigDict(from_attributes=True)
class RSVPSchemaInDBBase(RSVPSchemaBase):
id: UUID
response_message: str | None = None
dietary_requirements: str | None = None
additional_info: dict[str, Any] | None = None
response_date: datetime
created_at: datetime
updated_at: datetime
model_config = ConfigDict(from_attributes=True)
class RSVPSchema(RSVPSchemaBase):
id: UUID
response_date: datetime
created_at: datetime
updated_at: datetime
model_config = ConfigDict(from_attributes=True, arbitrary_types_allowed=True)
class RSVPSchemaInDB(RSVPSchemaBase):
id: str
created_at: datetime
updated_at: datetime
model_config = ConfigDict(from_attributes=True)