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.
This commit is contained in:
2025-03-15 02:20:36 +01:00
parent 270bfda1f8
commit 632a762d64
2 changed files with 136 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
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)