headless_lms_models/
chatbot_conversation_message_tool_outputs.rs1use crate::prelude::*;
2use utoipa::ToSchema;
3
4#[derive(Clone, PartialEq, Deserialize, Serialize, Debug, ToSchema)]
5
6pub struct ChatbotConversationMessageToolOutput {
7 pub id: Uuid,
8 pub created_at: DateTime<Utc>,
9 pub updated_at: DateTime<Utc>,
10 pub deleted_at: Option<DateTime<Utc>>,
11 pub message_id: Uuid,
12 pub tool_name: String,
13 pub tool_output: String,
14 pub tool_call_id: String,
15}
16
17impl Default for ChatbotConversationMessageToolOutput {
18 fn default() -> Self {
19 Self {
20 id: Uuid::nil(),
21 created_at: Default::default(),
22 updated_at: Default::default(),
23 deleted_at: None,
24 message_id: Uuid::nil(),
25 tool_name: Default::default(),
26 tool_output: Default::default(),
27 tool_call_id: Default::default(),
28 }
29 }
30}
31
32pub async fn insert(
33 conn: &mut PgConnection,
34 input: ChatbotConversationMessageToolOutput,
35 msg_id: Uuid,
36) -> ModelResult<ChatbotConversationMessageToolOutput> {
37 let res = sqlx::query_as!(
38 ChatbotConversationMessageToolOutput,
39 r#"
40INSERT INTO chatbot_conversation_message_tool_outputs (
41 message_id,
42 tool_name,
43 tool_output,
44 tool_call_id
45 )
46VALUES ($1, $2, $3, $4)
47RETURNING *
48 "#,
49 msg_id,
50 input.tool_name,
51 input.tool_output,
52 input.tool_call_id,
53 )
54 .fetch_one(conn)
55 .await?;
56 Ok(res)
57}
58
59pub async fn get_by_id(
60 conn: &mut PgConnection,
61 id: Uuid,
62) -> ModelResult<ChatbotConversationMessageToolOutput> {
63 let res = sqlx::query_as!(
64 ChatbotConversationMessageToolOutput,
65 r#"
66SELECT *
67FROM chatbot_conversation_message_tool_outputs
68WHERE id = $1
69 AND deleted_at IS NULL
70 "#,
71 id
72 )
73 .fetch_one(conn)
74 .await?;
75 Ok(res)
76}
77
78pub async fn delete(
79 conn: &mut PgConnection,
80 id: Uuid,
81) -> ModelResult<ChatbotConversationMessageToolOutput> {
82 let res = sqlx::query_as!(
83 ChatbotConversationMessageToolOutput,
84 r#"
85UPDATE chatbot_conversation_message_tool_outputs
86SET deleted_at = NOW()
87WHERE id = $1
88RETURNING *
89 "#,
90 id
91 )
92 .fetch_one(conn)
93 .await?;
94 Ok(res)
95}