backend/objects/
message.rs1use 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}