headless_lms_models/
chatbot_conversation_message_tool_outputs.rs

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