# app/schemas/payment_provider.py import json from datetime import datetime from pydantic import BaseModel, field_validator from typing import Optional, Dict, Any, Literal, List class VasPaymentProviderBase(BaseModel): name: Optional[str] = None title: Optional[str] = None channel: Optional[str] = None currency: Optional[str] = None icon: Optional[str] = None enabled: Optional[int] = None config: Optional[Dict[str, Any]] = None @field_validator("config", mode="before") def normalize_json_field(cls, v): if v is None: return None if isinstance(v, str): try: return json.loads(v) except Exception: return {} return v class VasPaymentProviderCreate(VasPaymentProviderBase): name: str channel: str currency: str class VasPaymentProviderUpdate(VasPaymentProviderBase): pass class VasPaymentProviderOut(VasPaymentProviderBase): id: int created_at: datetime updated_at: datetime model_config = { "from_attributes": True } class VasPaymentProviderSimpleOut(BaseModel): name: str # channel: str currency: str icon: Optional[str] = None model_config = { "from_attributes": True }