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