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