headless_lms_models/
chatbot_conversation_messages_citations.rs1use crate::prelude::*;
2
3#[derive(Clone, PartialEq, Deserialize, Serialize)]
4#[cfg_attr(feature = "ts_rs", derive(TS))]
5pub struct ChatbotConversationMessageCitation {
6 pub id: Uuid,
7 pub created_at: DateTime<Utc>,
8 pub updated_at: DateTime<Utc>,
9 pub deleted_at: Option<DateTime<Utc>>,
10 pub conversation_message_id: Uuid,
11 pub conversation_id: Uuid,
12 pub course_material_chapter_number: Option<i32>,
13 pub title: String,
14 pub content: String,
15 pub document_url: String,
16 pub citation_number: i32,
17}
18
19pub async fn insert(
20 conn: &mut PgConnection,
21 input: ChatbotConversationMessageCitation,
22) -> ModelResult<ChatbotConversationMessageCitation> {
23 let res = sqlx::query_as!(
24 ChatbotConversationMessageCitation,
25 r#"
26INSERT INTO chatbot_conversation_messages_citations (
27 conversation_message_id,
28 conversation_id,
29 course_material_chapter_number,
30 title,
31 content,
32 document_url,
33 citation_number)
34VALUES ($1, $2, $3, $4, $5, $6, $7)
35RETURNING *
36 "#,
37 input.conversation_message_id,
38 input.conversation_id,
39 input.course_material_chapter_number,
40 input.title,
41 input.content,
42 input.document_url,
43 input.citation_number
44 )
45 .fetch_one(conn)
46 .await?;
47 Ok(res)
48}
49
50pub async fn get_by_message_id(
51 conn: &mut PgConnection,
52 message_id: Uuid,
53) -> ModelResult<Vec<ChatbotConversationMessageCitation>> {
54 let res = sqlx::query_as!(
55 ChatbotConversationMessageCitation,
56 r#"
57SELECT * FROM chatbot_conversation_messages_citations
58WHERE conversation_message_id = $1
59AND deleted_at IS NULL
60 "#,
61 message_id
62 )
63 .fetch_all(conn)
64 .await?;
65 Ok(res)
66}
67
68pub async fn get_by_conversation_id(
69 conn: &mut PgConnection,
70 conversation_id: Uuid,
71) -> ModelResult<Vec<ChatbotConversationMessageCitation>> {
72 let res = sqlx::query_as!(
73 ChatbotConversationMessageCitation,
74 r#"
75SELECT * FROM chatbot_conversation_messages_citations
76WHERE conversation_id = $1
77AND deleted_at IS NULL
78 "#,
79 conversation_id
80 )
81 .fetch_all(conn)
82 .await?;
83 Ok(res)
84}