memory.py 1.1 KB

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