| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import json
- from pydantic import BaseModel, field_validator
- from typing import Optional, Dict, Any, Literal, List
- from datetime import datetime
- class VasProductBase(BaseModel):
- country: Optional[str] = None
- city: Optional[str] = None
- visa_type: Optional[str]
- provider: Optional[str] = None
- title: Optional[str] = None
- description: Optional[str] = None
- price_amount: int = 0
- price_currency: Optional[str] = None
- extra_fields: Optional[Dict[str, Any]] = None
- schema_id: Optional[int] = None
- enabled: Optional[int] = None
-
- @field_validator("extra_fields", 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 VasProductCreate(VasProductBase):
- country: str
- city: str
- visa_type: Optional[str]
- provider: str
- title: str
- description: str
- # extra_fields: Dict[str, Any]
- price_amount: int
- price_currency: str
- schema_id: Optional[int]
-
- class VasProductUpdate(VasProductBase):
- pass
- class VasProductOut(VasProductBase):
- id: int
- created_at: datetime
- updated_at: datetime
- model_config = {
- "from_attributes": True
- }
|