app.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from datetime import datetime
  2. from typing import TYPE_CHECKING
  3. from pydantic import BaseModel, Field
  4. from core_shared import JSONValue
  5. if TYPE_CHECKING:
  6. from app.db.models import AppDefinition, AppVersion
  7. class AppCreateRequest(BaseModel):
  8. tenant_id: str
  9. code: str
  10. name: str
  11. description: str | None = None
  12. owner_user_id: str | None = None
  13. settings_json: dict[str, JSONValue] = Field(default_factory=dict)
  14. class AppResponse(BaseModel):
  15. id: str
  16. tenant_id: str
  17. code: str
  18. name: str
  19. description: str | None = None
  20. owner_user_id: str | None = None
  21. settings_json: dict[str, JSONValue] | None = None
  22. created_time: datetime
  23. @classmethod
  24. def from_entity(cls, entity: "AppDefinition") -> "AppResponse":
  25. return cls.model_validate(entity, from_attributes=True)
  26. class AppVersionCreateRequest(BaseModel):
  27. tenant_id: str
  28. app_id: str
  29. workflow_version_id: str
  30. status: str = "draft"
  31. published_by: str | None = None
  32. changelog: str | None = None
  33. class AppVersionResponse(BaseModel):
  34. id: str
  35. tenant_id: str
  36. app_id: str
  37. version_no: int
  38. workflow_version_id: str
  39. status: str
  40. published_time: datetime | None = None
  41. published_by: str | None = None
  42. changelog: str | None = None
  43. created_time: datetime
  44. @classmethod
  45. def from_entity(cls, entity: "AppVersion") -> "AppVersionResponse":
  46. return cls.model_validate(entity, from_attributes=True)