schema.py 934 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. # app/schemas/schema.py
  2. import json
  3. from pydantic import BaseModel, field_validator
  4. from typing import Optional, Dict, Any, Literal, List
  5. from datetime import datetime
  6. class VasSchemaBase(BaseModel):
  7. name: Optional[str] = None
  8. description: Optional[str] = None
  9. schema_json: Optional[Dict[str, Any]] = None
  10. @field_validator("schema_json", mode="before")
  11. def normalize_json_field(cls, v):
  12. if v is None:
  13. return None
  14. if isinstance(v, str):
  15. try:
  16. return json.loads(v)
  17. except Exception:
  18. return {}
  19. return v
  20. class VasSchemaCreate(VasSchemaBase):
  21. name: str
  22. description: str
  23. schema_json: Dict[str, Any]
  24. class VasSchemaUpdate(VasSchemaBase):
  25. pass
  26. class VasSchemaOut(VasSchemaBase):
  27. id: int
  28. created_at: datetime
  29. updated_at: datetime
  30. model_config = {
  31. "from_attributes": True
  32. }