systemprompt_agent/repository/task/
task_messages.rs1use 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 let pool = self.get_pg_pool()?;
15 get_next_sequence_number(&pool, task_id).await
16 }
17
18 pub async fn get_messages_by_task(
19 &self,
20 task_id: &systemprompt_identifiers::TaskId,
21 ) -> Result<Vec<Message>, RepositoryError> {
22 let pool = self.get_pg_pool()?;
23 get_messages_by_task(&pool, task_id).await
24 }
25
26 pub async fn get_message_parts(
27 &self,
28 message_id: &systemprompt_identifiers::MessageId,
29 ) -> Result<Vec<Part>, RepositoryError> {
30 let pool = self.get_pg_pool()?;
31 get_message_parts(&pool, message_id).await
32 }
33
34 pub async fn get_messages_by_context(
35 &self,
36 context_id: &systemprompt_identifiers::ContextId,
37 ) -> Result<Vec<Message>, RepositoryError> {
38 let pool = self.get_pg_pool()?;
39 get_messages_by_context(&pool, context_id).await
40 }
41
42 pub async fn get_next_sequence_number_in_tx(
43 &self,
44 tx: &mut dyn systemprompt_database::DatabaseTransaction,
45 task_id: &systemprompt_identifiers::TaskId,
46 ) -> Result<i32, RepositoryError> {
47 get_next_sequence_number_in_tx(tx, task_id).await
48 }
49
50 pub async fn persist_message_with_tx(
51 &self,
52 tx: &mut dyn systemprompt_database::DatabaseTransaction,
53 message: &Message,
54 task_id: &systemprompt_identifiers::TaskId,
55 context_id: &systemprompt_identifiers::ContextId,
56 sequence_number: i32,
57 user_id: Option<&systemprompt_identifiers::UserId>,
58 session_id: &systemprompt_identifiers::SessionId,
59 trace_id: &systemprompt_identifiers::TraceId,
60 ) -> Result<(), RepositoryError> {
61 persist_message_with_tx(
62 tx,
63 message,
64 task_id,
65 context_id,
66 sequence_number,
67 user_id,
68 session_id,
69 trace_id,
70 )
71 .await
72 }
73}