Skip to main content

headless_lms_models/
chatbot_conversation_message_reasoning.rs

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