memory.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from typing import TYPE_CHECKING
  2. from pydantic import BaseModel
  3. from core_domain import (
  4. MemoryCreateContract,
  5. MemoryItemContract,
  6. MemorySearchRequestContract,
  7. MemorySearchResultContract,
  8. MemoryStatus,
  9. )
  10. from core_shared import JSONValue
  11. if TYPE_CHECKING:
  12. from app.db.models import MemoryItem
  13. class MemoryCreateRequest(MemoryCreateContract):
  14. pass
  15. class MemoryStatusUpdateRequest(BaseModel):
  16. tenant_id: str
  17. status: MemoryStatus
  18. class MemorySearchRequest(MemorySearchRequestContract):
  19. pass
  20. class MemoryResponse(MemoryItemContract):
  21. @classmethod
  22. def from_entity(cls, entity: "MemoryItem") -> "MemoryResponse":
  23. return cls.model_validate(entity, from_attributes=True)
  24. class MemorySearchResultResponse(MemorySearchResultContract):
  25. item: MemoryResponse
  26. @classmethod
  27. def from_entity(
  28. cls,
  29. entity: "MemoryItem",
  30. score: float,
  31. score_json: dict[str, JSONValue],
  32. ) -> "MemorySearchResultResponse":
  33. return cls(
  34. item=MemoryResponse.from_entity(entity),
  35. score=score,
  36. score_json=score_json,
  37. )