Files
2026-06-15 14:50:15 +08:00

36 lines
821 B
Python

from pydantic import BaseModel, Field
from typing import Optional, List
from datetime import datetime
class CategoryBase(BaseModel):
name: str = Field(..., min_length=1, max_length=100)
parent_id: Optional[int] = None
level: int = Field(default=1, ge=1, le=2)
icon: Optional[str] = None
sort_order: int = 0
class CategoryCreate(CategoryBase):
pass
class CategoryUpdate(BaseModel):
name: Optional[str] = None
parent_id: Optional[int] = None
level: Optional[int] = None
icon: Optional[str] = None
sort_order: Optional[int] = None
class CategoryResponse(CategoryBase):
id: int
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class CategoryWithChildren(CategoryResponse):
children: List["CategoryResponse"] = []