services.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from app.db.models import Message, RunRequest
  2. from app.db.models import Session as SessionModel
  3. from app.domain.repositories import MessageRepository, RunRequestRepository, SessionRepository
  4. from app.schemas.message import MessageCreateRequest
  5. from app.schemas.run_request import RunRequestCreateRequest
  6. from app.schemas.session import SessionCreateRequest
  7. class SessionApplicationService:
  8. def __init__(
  9. self,
  10. session_repository: SessionRepository,
  11. message_repository: MessageRepository,
  12. run_request_repository: RunRequestRepository) -> None:
  13. self.session_repository = session_repository
  14. self.message_repository = message_repository
  15. self.run_request_repository = run_request_repository
  16. def create_session(self, payload: SessionCreateRequest) -> SessionModel:
  17. return self.session_repository.create(
  18. app_id=payload.app_id,
  19. user_id=payload.user_id,
  20. channel_type=payload.channel_type,
  21. title=payload.title)
  22. def list_sessions(self, app_id: str | None = None) -> list[SessionModel]:
  23. return self.session_repository.list_by_scope(app_id=app_id)
  24. def create_message(self, payload: MessageCreateRequest) -> Message:
  25. return self.message_repository.create(
  26. session_id=payload.session_id,
  27. turn_id=payload.turn_id,
  28. role=payload.role,
  29. content_type=payload.content_type,
  30. content_text=payload.content_text,
  31. content_json=payload.content_json)
  32. def list_messages(self, session_id: str) -> list[Message]:
  33. return self.message_repository.list_by_session(session_id=session_id)
  34. def create_run_request(self, payload: RunRequestCreateRequest) -> RunRequest:
  35. return self.run_request_repository.create(
  36. session_id=payload.session_id,
  37. app_config_id=payload.app_config_id,
  38. workflow_config_id=payload.workflow_config_id,
  39. trigger_type=payload.trigger_type,
  40. request_payload_json=payload.request_payload_json,
  41. request_status=payload.request_status)
  42. def list_run_requests(self, session_id: str) -> list[RunRequest]:
  43. return self.run_request_repository.list_by_session(session_id=session_id)