product_routing.py 994 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import json
  2. from pydantic import BaseModel, field_validator
  3. from typing import Optional, Dict, Any, Literal, List
  4. from datetime import datetime
  5. class VasProductRoutingBase(BaseModel):
  6. is_active: Optional[int] = None
  7. config: Optional[Dict[str, Any]] = None
  8. @field_validator("config", mode="before")
  9. def normalize_json_field(cls, v):
  10. if v is None:
  11. return None
  12. if isinstance(v, str):
  13. try:
  14. return json.loads(v)
  15. except Exception:
  16. return {}
  17. return v
  18. class VasProductRoutingCreate(BaseModel):
  19. product_id: int
  20. routing_key: str
  21. script_version: str
  22. config: Dict[str, Any]
  23. class VasProductRoutingUpdate(VasProductRoutingBase):
  24. pass
  25. class VasProductRoutingOut(VasProductRoutingBase):
  26. id: int
  27. product_id: int
  28. routing_key: str
  29. script_version: str
  30. created_at: datetime
  31. updated_at: datetime
  32. model_config = {
  33. "from_attributes": True
  34. }