project.py 1017 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. """Project schemas."""
  2. from datetime import datetime
  3. from typing import Optional, Any
  4. from pydantic import BaseModel, Field
  5. class ProjectCreate(BaseModel):
  6. name: str = Field(..., min_length=1, max_length=200)
  7. description: str = ""
  8. topology: str = "SSSR"
  9. model_path: str = ""
  10. boundary_conditions: dict[str, Any] = Field(default_factory=dict)
  11. class ProjectUpdate(BaseModel):
  12. name: Optional[str] = None
  13. description: Optional[str] = None
  14. topology: Optional[str] = None
  15. model_path: Optional[str] = None
  16. status: Optional[str] = None
  17. boundary_conditions: Optional[dict[str, Any]] = None
  18. class ProjectResponse(BaseModel):
  19. id: int
  20. name: str
  21. description: str
  22. topology: str
  23. model_path: str
  24. status: str
  25. boundary_conditions: dict[str, Any]
  26. plan_count: int = 0
  27. created_at: datetime
  28. updated_at: datetime
  29. class Config:
  30. from_attributes = True
  31. class ProjectListResponse(BaseModel):
  32. total: int
  33. items: list[ProjectResponse]