agent_document_injection_repo.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from __future__ import annotations
  2. from sqlalchemy import select
  3. from supply_infra.db.models.agent_document_injection import AgentDocumentInjection
  4. from supply_infra.db.repositories.base import BaseRepository
  5. class AgentDocumentInjectionRepository(BaseRepository[AgentDocumentInjection]):
  6. model = AgentDocumentInjection
  7. def get_by_agent_name(self, agent_name: str) -> AgentDocumentInjection | None:
  8. stmt = select(AgentDocumentInjection).where(
  9. AgentDocumentInjection.agent_name == agent_name
  10. )
  11. return self.session.scalar(stmt)
  12. def upsert(
  13. self,
  14. *,
  15. agent_name: str,
  16. content: str,
  17. enabled: bool,
  18. ) -> AgentDocumentInjection:
  19. entity = self.get_by_agent_name(agent_name)
  20. if entity is None:
  21. entity = AgentDocumentInjection(
  22. agent_name=agent_name,
  23. content=content,
  24. enabled=int(enabled),
  25. )
  26. return self.add(entity)
  27. entity.content = content
  28. entity.enabled = int(enabled)
  29. self.session.flush()
  30. return entity