from pydantic import BaseModel, ConfigDict from datetime import datetime from typing import Optional class CalendarEventCreate(BaseModel): title: str description: Optional[str] = None start_datetime: datetime end_datetime: datetime all_day: bool = False color: Optional[str] = None location_id: Optional[int] = None recurrence_rule: Optional[str] = None is_starred: bool = False calendar_id: Optional[int] = None # If None, server assigns default calendar class CalendarEventUpdate(BaseModel): title: Optional[str] = None description: Optional[str] = None start_datetime: Optional[datetime] = None end_datetime: Optional[datetime] = None all_day: Optional[bool] = None color: Optional[str] = None location_id: Optional[int] = None recurrence_rule: Optional[str] = None is_starred: Optional[bool] = None calendar_id: Optional[int] = None class CalendarEventResponse(BaseModel): id: int title: str description: Optional[str] start_datetime: datetime end_datetime: datetime all_day: bool color: Optional[str] location_id: Optional[int] recurrence_rule: Optional[str] is_starred: bool calendar_id: int calendar_name: str calendar_color: str is_virtual: bool = False created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True)