hermod_api/db/
feedback.rs

1use std::fmt::Debug;
2
3use serde::{Deserialize, Serialize};
4use sqlx::PgPool;
5use uuid::Uuid;
6
7#[derive(sqlx::FromRow, Serialize, Deserialize, Clone)]
8pub struct Feedback {
9    pub id: Uuid,
10    pub form_input_id: Uuid,
11    pub payload: String,
12}
13
14impl Debug for Feedback {
15    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
16        f.debug_struct("Feedback")
17            .field("id", &self.id)
18            .field("form_input_id", &self.form_input_id)
19            .field("payload", &self.payload)
20            .finish()
21    }
22}
23
24pub struct NewFeedback {
25    pub id: Uuid,
26    pub form_input_id: Uuid,
27    pub payload: String,
28}
29
30impl NewFeedback {
31    pub fn default() -> Self {
32        Self {
33            id: Uuid::new_v4(),
34            form_input_id: Uuid::new_v4(),
35            payload: String::from(""),
36        }
37    }
38
39    pub async fn store(&self, pool: &PgPool) -> Result<(), anyhow::Error> {
40        sqlx::query!(
41            "INSERT INTO feedback (id, form_input_id, payload)
42             VALUES ($1, $2, $3)",
43            self.id,
44            self.form_input_id,
45            self.payload,
46        )
47        .execute(pool)
48        .await?;
49
50        Ok(())
51    }
52}