schemas.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. from pydantic import BaseModel
  2. from typing import List, Optional
  3. from datetime import datetime
  4. class ProjectBase(BaseModel):
  5. project_name: str
  6. description: Optional[str] = None
  7. class ProjectCreate(ProjectBase):
  8. pass
  9. class ProjectOut(ProjectBase):
  10. id: str
  11. created_at: datetime
  12. class Config:
  13. from_attributes = True
  14. # Keep old name for backward compatibility
  15. Project = ProjectOut
  16. class DataFileBase(BaseModel):
  17. relative_path: str
  18. file_size: int
  19. file_type: str
  20. file_sha: str
  21. direction: Optional[str] = None
  22. label: Optional[str] = None
  23. extracted_value: Optional[str] = None
  24. group_key: Optional[str] = None
  25. class DataFileOut(DataFileBase):
  26. id: int
  27. storage_path: str
  28. created_at: datetime
  29. class Config:
  30. from_attributes = True
  31. # Keep old name for backward compatibility
  32. DataFile = DataFileOut
  33. class DataVersionBase(BaseModel):
  34. stage: str
  35. commit_id: str
  36. author: Optional[str] = None
  37. commit_message: Optional[str] = None
  38. manifest_snapshot: Optional[str] = None
  39. class DataVersionOut(DataVersionBase):
  40. id: str
  41. project_id: str
  42. created_at: datetime
  43. class Config:
  44. from_attributes = True
  45. class DataVersionWithFiles(DataVersionOut):
  46. files: List[DataFileOut] = []
  47. # Keep old name for backward compatibility
  48. DataVersion = DataVersionOut
  49. class DataRecordBase(BaseModel):
  50. stage: str
  51. commit_id: str
  52. commit_message: Optional[str] = None
  53. group_key: Optional[str] = None
  54. content_hash: Optional[str] = None
  55. inputs: Optional[List] = []
  56. outputs: Optional[List] = []
  57. author: Optional[str] = None
  58. class DataRecordOut(DataRecordBase):
  59. id: str
  60. project_id: str
  61. version_id: str
  62. created_at: datetime
  63. class Config:
  64. from_attributes = True