from pydantic import BaseModel, ConfigDict, field_validator from typing import Optional, List from decimal import Decimal from datetime import datetime from app.schemas.user import UserPublic class SettlementActivityBase(BaseModel): expense_split_id: int paid_by_user_id: int amount_paid: Decimal paid_at: Optional[datetime] = None class SettlementActivityCreate(SettlementActivityBase): @field_validator('amount_paid') @classmethod def amount_must_be_positive(cls, v: Decimal) -> Decimal: if v <= Decimal("0"): raise ValueError("Amount paid must be a positive value.") return v class SettlementActivityPublic(SettlementActivityBase): id: int created_by_user_id: int created_at: datetime updated_at: datetime payer: Optional[UserPublic] = None creator: Optional[UserPublic] = None model_config = ConfigDict(from_attributes=True)