use rustlavel::prelude::*;
#[derive(Model, Default, Debug, Clone)]
#[model(table = "notifications")]
pub struct Notification {
#[model(primary_key, generated)]
pub id: i64,
pub user_id: Option<i64>,
pub level: String,
pub title: String,
pub body: Option<String>,
pub url: Option<String>,
pub sent_by: Option<i64>,
pub created_at: Option<String>,
}
#[derive(Model, Default, Debug, Clone)]
#[model(table = "notification_reads")]
pub struct NotificationRead {
#[model(primary_key, generated)]
pub id: i64,
pub notification_id: i64,
pub user_id: i64,
pub read_at: Option<String>,
}
impl Notification {
pub fn is_broadcast(&self) -> bool {
self.user_id.is_none()
}
pub fn tint(&self) -> &'static str {
match self.level.as_str() {
"success" => "badge-success",
"warning" => "badge-warning",
"danger" => "badge-danger",
_ => "badge-brand",
}
}
}