from pydantic import BaseModel, Field from typing import Optional from datetime import datetime import uuid class ExpenseBase(BaseModel): title: str = Field(..., description="Expense title") description: Optional[str] = Field(None, description="Expense description") amount: float = Field(..., description="Expense amount") category: Optional[str] = Field(None, description="Expense category") class ExpenseCreate(ExpenseBase): pass class ExpenseUpdate(ExpenseBase): title: Optional[str] = Field(None, description="Expense title") description: Optional[str] = Field(None, description="Expense description") amount: Optional[float] = Field(None, description="Expense amount") category: Optional[str] = Field(None, description="Expense category") class ExpenseSchema(ExpenseBase): id: uuid.UUID created_at: datetime updated_at: datetime class Config: orm_mode = True