from pydantic import BaseModel, ConfigDict, Field from typing import Literal, Optional from datetime import datetime class EventInvitationCreate(BaseModel): model_config = ConfigDict(extra="forbid") user_ids: list[int] = Field(..., min_length=1, max_length=20) class EventInvitationRespond(BaseModel): model_config = ConfigDict(extra="forbid") status: Literal["accepted", "tentative", "declined"] class EventInvitationOverrideCreate(BaseModel): model_config = ConfigDict(extra="forbid") status: Literal["accepted", "tentative", "declined"] class EventInvitationResponse(BaseModel): model_config = ConfigDict(from_attributes=True) id: int event_id: int user_id: int invited_by: Optional[int] status: str invited_at: datetime responded_at: Optional[datetime] invitee_name: Optional[str] = None invitee_umbral_name: Optional[str] = None