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.
61 lines
1.6 KiB
Python
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) |