services.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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, RunRequestUpdateRequest
  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. runtime_target_type=payload.runtime_target_type,
  23. runtime_target_id=payload.runtime_target_id,
  24. runtime_target_config_id=payload.runtime_target_config_id)
  25. def list_sessions(self, app_id: str | None = None) -> list[SessionModel]:
  26. return self.session_repository.list_by_scope(app_id=app_id)
  27. def get_session(self, *, session_id: str) -> SessionModel | None:
  28. return self.session_repository.get_by_id(session_id=session_id)
  29. def create_message(self, payload: MessageCreateRequest) -> Message:
  30. return self.message_repository.create(
  31. session_id=payload.session_id,
  32. turn_id=payload.turn_id,
  33. role=payload.role,
  34. content_type=payload.content_type,
  35. content_text=payload.content_text,
  36. content_json=payload.content_json)
  37. def list_messages(self, session_id: str) -> list[Message]:
  38. return self.message_repository.list_by_session(session_id=session_id)
  39. def create_run_request(self, payload: RunRequestCreateRequest) -> RunRequest:
  40. return self.run_request_repository.create(
  41. session_id=payload.session_id,
  42. app_config_id=payload.app_config_id,
  43. workflow_config_id=payload.workflow_config_id,
  44. trigger_type=payload.trigger_type,
  45. request_payload_json=payload.request_payload_json,
  46. request_status=payload.request_status)
  47. def list_run_requests(self, session_id: str) -> list[RunRequest]:
  48. return self.run_request_repository.list_by_session(session_id=session_id)
  49. def update_run_request(self, payload: RunRequestUpdateRequest) -> RunRequest | None:
  50. return self.run_request_repository.update(
  51. run_request_id=payload.run_request_id,
  52. request_payload_json=payload.request_payload_json,
  53. request_status=payload.request_status)