Skip to main content

headless_lms_models/
chatbot_conversation_messages_citations.rs

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