From 30f011fcd5ba87e3af05e5d569591da222c53aa1 Mon Sep 17 00:00:00 2001 From: jude Date: Thu, 28 Mar 2024 19:34:30 +0000 Subject: [PATCH] Don't send attachments over API --- .../routes/dashboard/api/guild/reminders.rs | 27 ++++++------ src/web/routes/dashboard/export.rs | 6 +-- src/web/routes/dashboard/mod.rs | 42 ++++++++++++++++--- 3 files changed, 53 insertions(+), 22 deletions(-) diff --git a/src/web/routes/dashboard/api/guild/reminders.rs b/src/web/routes/dashboard/api/guild/reminders.rs index 3dcf318..a6ca5de 100644 --- a/src/web/routes/dashboard/api/guild/reminders.rs +++ b/src/web/routes/dashboard/api/guild/reminders.rs @@ -17,7 +17,9 @@ use crate::web::{ consts::MIN_INTERVAL, guards::transaction::Transaction, routes::{ - dashboard::{create_database_channel, create_reminder, PatchReminder, Reminder}, + dashboard::{ + create_database_channel, create_reminder, CreateReminder, GetReminder, PatchReminder, + }, JsonResult, }, Database, @@ -26,7 +28,7 @@ use crate::web::{ #[post("/api/guild//reminders", data = "")] pub async fn create_guild_reminder( id: u64, - reminder: Json, + reminder: Json, cookies: &CookieJar<'_>, ctx: &State, mut transaction: Transaction<'_>, @@ -78,9 +80,9 @@ pub async fn get_reminders( .join(","); sqlx::query_as_unchecked!( - Reminder, - "SELECT - reminders.attachment, + GetReminder, + " + SELECT reminders.attachment_name, reminders.avatar, channels.channel, @@ -192,7 +194,7 @@ pub async fn edit_reminder( .await .map_err(|e| { warn!("Error updating reminder interval: {:?}", e); - json!({ "reminder": Option::::None, "errors": vec!["Unknown error"] }) + json!({ "reminder": Option::::None, "errors": vec!["Unknown error"] }) })? .days .unwrap_or(0), @@ -206,7 +208,7 @@ pub async fn edit_reminder( .await .map_err(|e| { warn!("Error updating reminder interval: {:?}", e); - json!({ "reminder": Option::::None, "errors": vec!["Unknown error"] }) + json!({ "reminder": Option::::None, "errors": vec!["Unknown error"] }) })? .months .unwrap_or(0), @@ -220,7 +222,7 @@ pub async fn edit_reminder( .await .map_err(|e| { warn!("Error updating reminder interval: {:?}", e); - json!({ "reminder": Option::::None, "errors": vec!["Unknown error"] }) + json!({ "reminder": Option::::None, "errors": vec!["Unknown error"] }) })? .seconds .unwrap_or(0), @@ -249,7 +251,7 @@ pub async fn edit_reminder( .await .map_err(|e| { warn!("Error updating reminder interval: {:?}", e); - json!({ "reminder": Option::::None, "errors": vec!["Unknown error"] }) + json!({ "reminder": Option::::None, "errors": vec!["Unknown error"] }) })?; } @@ -321,8 +323,9 @@ pub async fn edit_reminder( } match sqlx::query_as_unchecked!( - Reminder, - "SELECT reminders.attachment, + GetReminder, + " + SELECT reminders.attachment_name, reminders.avatar, channels.channel, @@ -361,7 +364,7 @@ pub async fn edit_reminder( Err(e) => { warn!("Error exiting `edit_reminder': {:?}", e); - Err(json!({"reminder": Option::::None, "errors": vec!["Unknown error"]})) + Err(json!({"reminder": Option::::None, "errors": vec!["Unknown error"]})) } } } diff --git a/src/web/routes/dashboard/export.rs b/src/web/routes/dashboard/export.rs index 8eac186..381d486 100644 --- a/src/web/routes/dashboard/export.rs +++ b/src/web/routes/dashboard/export.rs @@ -19,8 +19,7 @@ use crate::web::{ guards::transaction::Transaction, routes::{ dashboard::{ - create_reminder, generate_uid, ImportBody, Reminder, ReminderCsv, ReminderTemplateCsv, - TodoCsv, + create_reminder, CreateReminder, ImportBody, ReminderCsv, ReminderTemplateCsv, TodoCsv, }, JsonResult, }, @@ -150,7 +149,7 @@ pub(crate) async fn import_reminders( match channel_id.parse::() { Ok(channel_id) => { - let reminder = Reminder { + let reminder = CreateReminder { attachment: record.attachment, attachment_name: record.attachment_name, avatar: record.avatar, @@ -177,7 +176,6 @@ pub(crate) async fn import_reminders( name: record.name, restartable: record.restartable, tts: record.tts, - uid: generate_uid(), username: record.username, utc_time: record.utc_time, }; diff --git a/src/web/routes/dashboard/mod.rs b/src/web/routes/dashboard/mod.rs index 9137abe..231dd79 100644 --- a/src/web/routes/dashboard/mod.rs +++ b/src/web/routes/dashboard/mod.rs @@ -146,9 +146,39 @@ pub struct EmbedField { inline: bool, } -#[derive(Serialize, Deserialize)] -pub struct Reminder { +#[derive(Deserialize)] +pub struct CreateReminder { attachment: Option, + attachment_name: Option, + avatar: Option, + #[serde(with = "string")] + channel: u64, + content: String, + embed_author: String, + embed_author_url: Option, + embed_color: u32, + embed_description: String, + embed_footer: String, + embed_footer_url: Option, + embed_image_url: Option, + embed_thumbnail_url: Option, + embed_title: String, + embed_fields: Option>>, + enabled: bool, + expires: Option, + interval_seconds: Option, + interval_days: Option, + interval_months: Option, + #[serde(default = "name_default")] + name: String, + restartable: bool, + tts: bool, + username: Option, + utc_time: NaiveDateTime, +} + +#[derive(Serialize)] +pub struct GetReminder { attachment_name: Option, avatar: Option, #[serde(with = "string")] @@ -363,7 +393,7 @@ pub(crate) async fn create_reminder( transaction: &mut Transaction<'_>, guild_id: GuildId, user_id: UserId, - reminder: Reminder, + reminder: CreateReminder, ) -> JsonResult { // check guild in db match sqlx::query!("SELECT 1 as A FROM guilds WHERE guild = ?", guild_id.get()) @@ -545,9 +575,9 @@ pub(crate) async fn create_reminder( .await { Ok(_) => sqlx::query_as_unchecked!( - Reminder, - "SELECT - reminders.attachment, + GetReminder, + " + SELECT reminders.attachment_name, reminders.avatar, channels.channel,