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