1
0
Fork 0
forked from 2sys/shoutdotdev
shoutdotdev/src/messages.rs

43 lines
1 KiB
Rust
Raw Normal View History

2025-01-31 14:30:08 -08:00
use chrono::{DateTime, Utc};
use diesel::{
dsl::{auto_type, AsSelect},
pg::Pg,
prelude::*,
};
use uuid::Uuid;
use crate::{projects::Project, schema::messages};
#[derive(Associations, Clone, Debug, Identifiable, Queryable, Selectable)]
#[diesel(table_name = messages)]
#[diesel(belongs_to(Project))]
pub struct Message {
pub id: Uuid,
pub project_id: Uuid,
pub created_at: DateTime<Utc>,
pub message: String,
}
impl Message {
#[auto_type(no_type_alias)]
pub fn all() -> _ {
let select: AsSelect<Message, Pg> = Message::as_select();
messages::table.select(select)
}
#[auto_type(no_type_alias)]
pub fn with_project(project_id: Uuid) -> _ {
messages::project_id.eq(project_id)
}
#[auto_type(no_type_alias)]
pub fn values_now(project_id: Uuid, message: String) -> _ {
let id: Uuid = Uuid::now_v7();
(
messages::id.eq(id),
messages::project_id.eq(project_id),
messages::message.eq(message),
)
}
}