repository.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from typing import Protocol
  2. from zbt.domains.knowledge.models import KnowledgeDocument, KnowledgeSearchTest
  3. class KnowledgeRepository(Protocol):
  4. def save_document(self, document: KnowledgeDocument) -> None: ...
  5. def get_document(self, document_id: str) -> KnowledgeDocument | None: ...
  6. def list_documents(self) -> list[KnowledgeDocument]: ...
  7. def save_search_test(self, search_test: KnowledgeSearchTest) -> None: ...
  8. def list_search_tests(self, document_id: str) -> list[KnowledgeSearchTest]: ...
  9. class InMemoryKnowledgeRepository:
  10. def __init__(self) -> None:
  11. self._documents: dict[str, KnowledgeDocument] = {}
  12. self._search_tests: dict[str, KnowledgeSearchTest] = {}
  13. def save_document(self, document: KnowledgeDocument) -> None:
  14. self._documents[document.id] = document
  15. def get_document(self, document_id: str) -> KnowledgeDocument | None:
  16. return self._documents.get(document_id)
  17. def list_documents(self) -> list[KnowledgeDocument]:
  18. return list(self._documents.values())
  19. def save_search_test(self, search_test: KnowledgeSearchTest) -> None:
  20. self._search_tests[search_test.id] = search_test
  21. def list_search_tests(self, document_id: str) -> list[KnowledgeSearchTest]:
  22. return [
  23. search_test
  24. for search_test in self._search_tests.values()
  25. if search_test.document_id == document_id
  26. ]