mitlist/be/app/schemas/settlement_activity.py

34 lines
925 B
Python

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)