style: move structs to objects and split into several files for readability

This commit is contained in:
Radical 2025-06-02 00:28:48 +02:00
parent 08cb70ce18
commit 7021c80f02
32 changed files with 1591 additions and 1474 deletions

40
src/objects/message.rs Normal file
View file

@ -0,0 +1,40 @@
use diesel::{Insertable, Queryable, Selectable};
use serde::Serialize;
use uuid::Uuid;
use crate::{Data, error::Error, schema::messages};
use super::User;
#[derive(Clone, Queryable, Selectable, Insertable)]
#[diesel(table_name = messages)]
#[diesel(check_for_backend(diesel::pg::Pg))]
pub struct MessageBuilder {
pub uuid: Uuid,
pub channel_uuid: Uuid,
pub user_uuid: Uuid,
pub message: String,
}
impl MessageBuilder {
pub async fn build(&self, data: &Data) -> Result<Message, Error> {
let user = User::fetch_one(data, self.user_uuid).await?;
Ok(Message {
uuid: self.uuid,
channel_uuid: self.channel_uuid,
user_uuid: self.user_uuid,
message: self.message.clone(),
user,
})
}
}
#[derive(Clone, Serialize)]
pub struct Message {
uuid: Uuid,
channel_uuid: Uuid,
user_uuid: Uuid,
message: String,
user: User,
}