payment_provider.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # app/schemas/payment_provider.py
  2. import json
  3. from datetime import datetime
  4. from pydantic import BaseModel, field_validator
  5. from typing import Optional, Dict, Any, Literal, List
  6. class VasPaymentProviderBase(BaseModel):
  7. name: Optional[str] = None
  8. title: Optional[str] = None
  9. channel: Optional[str] = None
  10. currency: Optional[str] = None
  11. icon: Optional[str] = None
  12. enabled: Optional[int] = None
  13. config: Optional[Dict[str, Any]] = None
  14. @field_validator("config", mode="before")
  15. def normalize_json_field(cls, v):
  16. if v is None:
  17. return None
  18. if isinstance(v, str):
  19. try:
  20. return json.loads(v)
  21. except Exception:
  22. return {}
  23. return v
  24. class VasPaymentProviderCreate(VasPaymentProviderBase):
  25. name: str
  26. channel: str
  27. currency: str
  28. class VasPaymentProviderUpdate(VasPaymentProviderBase):
  29. pass
  30. class VasPaymentProviderOut(VasPaymentProviderBase):
  31. id: int
  32. created_at: datetime
  33. updated_at: datetime
  34. model_config = {
  35. "from_attributes": True
  36. }
  37. class VasPaymentProviderSimpleOut(BaseModel):
  38. name: str
  39. # channel: str
  40. currency: str
  41. icon: Optional[str] = None
  42. model_config = {
  43. "from_attributes": True
  44. }