headless_lms_models/
chatbot_conversation_message_reasoning.rs1use 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}