from pydantic import BaseModel, ConfigDict, Field from datetime import datetime from typing import Optional class CalendarCreate(BaseModel): model_config = ConfigDict(extra="forbid") name: str = Field(min_length=1, max_length=100) color: str = Field("#3b82f6", max_length=20) class CalendarUpdate(BaseModel): model_config = ConfigDict(extra="forbid") name: Optional[str] = Field(None, min_length=1, max_length=100) color: Optional[str] = Field(None, max_length=20) is_visible: Optional[bool] = None class CalendarResponse(BaseModel): id: int name: str color: str is_default: bool is_system: bool is_visible: bool is_shared: bool = False created_at: datetime updated_at: datetime owner_umbral_name: Optional[str] = None my_permission: Optional[str] = None my_can_add_others: bool = False my_local_color: Optional[str] = None member_count: int = 0 model_config = ConfigDict(from_attributes=True)