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 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}