headless_lms_models/
chatbot_conversation_suggested_messages.rs1use crate::prelude::*;
2use utoipa::ToSchema;
3
4#[derive(Clone, PartialEq, Deserialize, Serialize, ToSchema)]
5
6pub struct ChatbotConversationSuggestedMessage {
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 message: String,
13}
14
15pub async fn insert(
16 conn: &mut PgConnection,
17 input: ChatbotConversationSuggestedMessage,
18) -> ModelResult<ChatbotConversationSuggestedMessage> {
19 let res = sqlx::query_as!(
20 ChatbotConversationSuggestedMessage,
21 r#"
22INSERT INTO chatbot_conversation_suggested_messages (
23 conversation_message_id,
24 message
25)
26VALUES ($1, $2)
27RETURNING *
28 "#,
29 input.conversation_message_id,
30 input.message,
31 )
32 .fetch_one(conn)
33 .await?;
34 Ok(res)
35}
36
37pub async fn insert_batch(
38 conn: &mut PgConnection,
39 conversation_message_id: &Uuid,
40 input: Vec<String>,
41) -> ModelResult<Vec<ChatbotConversationSuggestedMessage>> {
42 let res = sqlx::query_as!(
43 ChatbotConversationSuggestedMessage,
44 r#"
45INSERT INTO chatbot_conversation_suggested_messages (
46 conversation_message_id,
47 message
48)
49 SELECT $1,
50 UNNEST($2::VARCHAR(32376) [])
51RETURNING *
52 "#,
53 conversation_message_id,
54 &input,
55 )
56 .fetch_all(conn)
57 .await?;
58 Ok(res)
59}
60
61pub async fn get_by_conversation_message_id(
62 conn: &mut PgConnection,
63 message_id: Uuid,
64) -> ModelResult<Vec<ChatbotConversationSuggestedMessage>> {
65 let res = sqlx::query_as!(
66 ChatbotConversationSuggestedMessage,
67 r#"
68SELECT * FROM chatbot_conversation_suggested_messages
69WHERE conversation_message_id = $1
70AND deleted_at IS NULL
71 "#,
72 message_id,
73 )
74 .fetch_all(conn)
75 .await?;
76 Ok(res)
77}