31 lines
816 B
Python
31 lines
816 B
Python
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}
|