| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import json
- from pydantic import BaseModel, field_validator
- from typing import Optional, Any, Dict
- from datetime import datetime
- class TroovSessionBase(BaseModel):
- slot_date: str
- slot_time: str
- session_id: str
- source: str
- data: Optional[Dict[str, Any]] = None
- status: str = "pending"
-
-
- @field_validator("data", 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 TroovSessionCreate(TroovSessionBase):
- pass
- class TroovSessionUpdate(BaseModel):
- slot_date: Optional[str] = None
- slot_time: Optional[str] = None
- session_id: Optional[str] = None
- source: Optional[str] = None
- data: Optional[Dict[str, Any]] = None
- status: Optional[str] = None
- class TroovSessionOut(TroovSessionBase):
- created_at: datetime
- updated_at: datetime
- model_config = {
- "from_attributes": True
- }
|