# app/schemas/order.py import json from pydantic import BaseModel, field_validator from typing import Optional, Dict, Any, Literal, List from datetime import datetime class VasOrderBase(BaseModel): status: Optional[Literal['pending','paid','completed','closed']] = None user_inputs: Optional[Dict[str, Any]] = None @field_validator("user_inputs", 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 VasOrderCreate(BaseModel): product_id: int user_inputs: Dict[str, Any] class VasOrderUpdate(VasOrderBase): pass class VasOrderPatchUserInputs(BaseModel): user_inputs: Dict[str, Any] class VasOrderOut(VasOrderBase): id: str user_id: str product_name: Optional[str] user_name: Optional[str] base_amount: int base_currency: str created_at: datetime updated_at: datetime model_config = { "from_attributes": True }