from datetime import datetime from pydantic import BaseModel, Field class CategoryCreate(BaseModel): name: str = Field(..., max_length=200) type: str = Field(..., pattern="^(income|expense|transfer)$") parent_id: int | None = None icon: str | None = None color: str | None = Field(None, pattern=r"^#[0-9A-Fa-f]{6}$") class CategoryUpdate(BaseModel): name: str | None = Field(None, max_length=200) parent_id: int | None = None icon: str | None = None color: str | None = Field(None, pattern=r"^#[0-9A-Fa-f]{6}$") class CategoryOut(BaseModel): id: int user_id: int | None = None name: str type: str parent_id: int | None = None icon: str | None = None color: str | None = None created_at: datetime model_config = {"from_attributes": True}