import json from pydantic import BaseModel, field_validator from typing import Optional, Dict, Any, Literal, List from datetime import datetime class VasProductRoutingBase(BaseModel): is_active: 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 VasProductRoutingCreate(BaseModel): product_id: int routing_key: str script_version: str config: Dict[str, Any] class VasProductRoutingUpdate(VasProductRoutingBase): pass class VasProductRoutingOut(VasProductRoutingBase): id: int product_id: int routing_key: str script_version: str created_at: datetime updated_at: datetime model_config = { "from_attributes": True }