| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- # 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 VasOrderAdjustPrice(BaseModel):
- adjustment_delta: int
- reason: Optional[str] = None
- 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
- adjustment_delta: int
- final_amount: int
- base_currency: str
- created_at: datetime
- updated_at: datetime
- model_config = {
- "from_attributes": True
- }
|