Skip to main content

systemprompt_agent/repository/task/
task_messages.rs

1use super::TaskRepository;
2use crate::models::a2a::{Message, Part};
3use crate::repository::context::message::{
4    get_message_parts, get_messages_by_context, get_messages_by_task, get_next_sequence_number,
5    get_next_sequence_number_in_tx, persist_message_with_tx,
6};
7use systemprompt_traits::RepositoryError;
8
9impl TaskRepository {
10    pub async fn get_next_sequence_number(
11        &self,
12        task_id: &systemprompt_identifiers::TaskId,
13    ) -> Result<i32, RepositoryError> {
14        get_next_sequence_number(&self.pool, task_id).await
15    }
16
17    pub async fn get_messages_by_task(
18        &self,
19        task_id: &systemprompt_identifiers::TaskId,
20    ) -> Result<Vec<Message>, RepositoryError> {
21        get_messages_by_task(&self.pool, task_id).await
22    }
23
24    pub async fn get_message_parts(
25        &self,
26        message_id: &systemprompt_identifiers::MessageId,
27    ) -> Result<Vec<Part>, RepositoryError> {
28        get_message_parts(&self.pool, message_id).await
29    }
30
31    pub async fn get_messages_by_context(
32        &self,
33        context_id: &systemprompt_identifiers::ContextId,
34    ) -> Result<Vec<Message>, RepositoryError> {
35        get_messages_by_context(&self.pool, context_id).await
36    }
37
38    pub async fn get_next_sequence_number_in_tx(
39        &self,
40        tx: &mut dyn systemprompt_database::DatabaseTransaction,
41        task_id: &systemprompt_identifiers::TaskId,
42    ) -> Result<i32, RepositoryError> {
43        get_next_sequence_number_in_tx(tx, task_id).await
44    }
45
46    pub async fn persist_message_with_tx(
47        &self,
48        tx: &mut dyn systemprompt_database::DatabaseTransaction,
49        message: &Message,
50        task_id: &systemprompt_identifiers::TaskId,
51        context_id: &systemprompt_identifiers::ContextId,
52        sequence_number: i32,
53        user_id: Option<&systemprompt_identifiers::UserId>,
54        session_id: &systemprompt_identifiers::SessionId,
55        trace_id: &systemprompt_identifiers::TraceId,
56    ) -> Result<(), RepositoryError> {
57        persist_message_with_tx(
58            tx,
59            message,
60            task_id,
61            context_id,
62            sequence_number,
63            user_id,
64            session_id,
65            trace_id,
66        )
67        .await
68    }
69}