backend/objects/
message.rs

1use diesel::{Insertable, Queryable, Selectable};
2use serde::Serialize;
3use uuid::Uuid;
4
5use crate::{Data, error::Error, schema::messages};
6
7use super::User;
8
9#[derive(Clone, Queryable, Selectable, Insertable)]
10#[diesel(table_name = messages)]
11#[diesel(check_for_backend(diesel::pg::Pg))]
12pub struct MessageBuilder {
13    pub uuid: Uuid,
14    pub channel_uuid: Uuid,
15    pub user_uuid: Uuid,
16    pub message: String,
17}
18
19impl MessageBuilder {
20    pub async fn build(&self, data: &Data) -> Result<Message, Error> {
21        let user = User::fetch_one(data, self.user_uuid).await?;
22
23        Ok(Message {
24            uuid: self.uuid,
25            channel_uuid: self.channel_uuid,
26            user_uuid: self.user_uuid,
27            message: self.message.clone(),
28            user,
29        })
30    }
31}
32
33#[derive(Clone, Serialize)]
34pub struct Message {
35    uuid: Uuid,
36    channel_uuid: Uuid,
37    user_uuid: Uuid,
38    message: String,
39    user: User,
40}