app.py 1.4 KB

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