This update introduces event_id and guest_id fields to the RSVPSchemaBase model, ensuring better tracking of RSVP details. These additions enhance data association and model usability.
63 lines
1.6 KiB
Python
63 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):
|
|
event_id: UUID
|
|
guest_id: UUID
|
|
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) |