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