You've already forked AstralRinth
forked from didirus/AstralRinth
* typos :help_me: * (part 1/?) massive cleanup to make the code more Rust-ic and cut down heap allocations. * (part 2/?) massive cleanup to make the code more Rust-ic and cut down heap allocations. * (part 3/?) cut down some pretty major heap allocations here - more Bytes and BytesMuts, less Vec<u8>s also I don't really understand why you need to `to_vec` when you don't really use it again afterwards * (part 4/?) deduplicate error handling in backblaze logic * (part 5/?) fixes, cleanups, refactors, and reformatting * (part 6/?) cleanups and refactors * remove loads of `as_str` in types that already are `Display` * Revert "remove loads of `as_str` in types that already are `Display`" This reverts commit 4f974310cfb167ceba03001d81388db4f0fbb509. * reformat and move routes util to the util module * use streams * Run prepare + formatting issues Co-authored-by: Jai A <jaiagr+gpg@pm.me> Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
59 lines
1.7 KiB
Rust
59 lines
1.7 KiB
Rust
use super::ids::Base62Id;
|
|
use super::users::UserId;
|
|
use chrono::{DateTime, Utc};
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
|
#[serde(from = "Base62Id")]
|
|
#[serde(into = "Base62Id")]
|
|
pub struct NotificationId(pub u64);
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
pub struct Notification {
|
|
pub id: NotificationId,
|
|
pub user_id: UserId,
|
|
#[serde(rename = "type")]
|
|
pub type_: Option<String>,
|
|
pub title: String,
|
|
pub text: String,
|
|
pub link: String,
|
|
pub read: bool,
|
|
pub created: DateTime<Utc>,
|
|
pub actions: Vec<NotificationAction>,
|
|
}
|
|
|
|
use crate::database::models::notification_item::Notification as DBNotification;
|
|
use crate::database::models::notification_item::NotificationAction as DBNotificationAction;
|
|
|
|
impl From<DBNotification> for Notification {
|
|
fn from(notif: DBNotification) -> Self {
|
|
Self {
|
|
id: notif.id.into(),
|
|
user_id: notif.user_id.into(),
|
|
type_: notif.notification_type,
|
|
title: notif.title,
|
|
text: notif.text,
|
|
link: notif.link,
|
|
read: notif.read,
|
|
created: notif.created,
|
|
actions: notif.actions.into_iter().map(Into::into).collect(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
pub struct NotificationAction {
|
|
pub title: String,
|
|
/// The route to call when this notification action is called. Formatted HTTP Method, route
|
|
pub action_route: (String, String),
|
|
}
|
|
|
|
impl From<DBNotificationAction> for NotificationAction {
|
|
fn from(act: DBNotificationAction) -> Self {
|
|
Self {
|
|
title: act.title,
|
|
action_route: (act.action_route_method, act.action_route),
|
|
}
|
|
}
|
|
}
|