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 reasoning_id: String,
13    pub response_id: String,
14}
15
16impl Default for ChatbotConversationMessageReasoning {
17    fn default() -> Self {
18        Self {
19            id: Uuid::nil(),
20            chatbot_conversation_message_id: Uuid::nil(),
21            created_at: Default::default(),
22            updated_at: Default::default(),
23            deleted_at: None,
24            summary: None,
25            reasoning_id: Default::default(),
26            response_id: Default::default(),
27        }
28    }
29}
30
31pub async fn insert(
32    conn: &mut PgConnection,
33    input: ChatbotConversationMessageReasoning,
34    msg_id: Uuid,
35) -> ModelResult<ChatbotConversationMessageReasoning> {
36    let res = sqlx::query_as!(
37        ChatbotConversationMessageReasoning,
38        r#"
39INSERT INTO chatbot_conversation_message_reasoning (
40    chatbot_conversation_message_id,
41    summary,
42    response_id,
43    reasoning_id
44  )
45VALUES ($1, $2, $3, $4)
46RETURNING *
47        "#,
48        msg_id,
49        input.summary,
50        input.response_id,
51        input.reasoning_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<ChatbotConversationMessageReasoning> {
62    let res = sqlx::query_as!(
63        ChatbotConversationMessageReasoning,
64        r#"
65SELECT *
66FROM chatbot_conversation_message_reasoning
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 get_by_message_id(
78    conn: &mut PgConnection,
79    message_id: Uuid,
80) -> ModelResult<Option<ChatbotConversationMessageReasoning>> {
81    let res = sqlx::query_as!(
82        ChatbotConversationMessageReasoning,
83        r#"
84SELECT *
85FROM chatbot_conversation_message_reasoning
86WHERE chatbot_conversation_message_id = $1
87  AND deleted_at IS NULL
88        "#,
89        message_id
90    )
91    .fetch_optional(conn)
92    .await?;
93    Ok(res)
94}
95
96pub async fn delete(
97    conn: &mut PgConnection,
98    id: Uuid,
99) -> ModelResult<ChatbotConversationMessageReasoning> {
100    let res = sqlx::query_as!(
101        ChatbotConversationMessageReasoning,
102        r#"
103UPDATE chatbot_conversation_message_reasoning
104SET deleted_at = NOW()
105WHERE id = $1
106  AND deleted_at IS NULL
107RETURNING *
108        "#,
109        id
110    )
111    .fetch_one(conn)
112    .await?;
113    Ok(res)
114}