From dcfb5a2d4f2196bb327d6a8819103514d7bd5f24 Mon Sep 17 00:00:00 2001 From: jude Date: Fri, 4 Oct 2024 20:19:06 +0100 Subject: [PATCH] Speed up delete query --- compose.yaml | 7 ++++++- src/component_models/mod.rs | 20 ++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/compose.yaml b/compose.yaml index 53bdcd3..f276b1b 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,6 +1,12 @@ version: '3.3' services: + bot: + build: ./Containerfile.run + image: reminder-rs-run + restart: always + expose: + - '80' database: image: mysql:8.0 restart: always @@ -13,4 +19,3 @@ services: - '3306' volumes: - reminders:/var/lib/mysql - diff --git a/src/component_models/mod.rs b/src/component_models/mod.rs index dab6e8b..8cc8a66 100644 --- a/src/component_models/mod.rs +++ b/src/component_models/mod.rs @@ -153,17 +153,17 @@ impl ComponentDataModel { ComponentDataModel::DelSelector(selector) => { if let ComponentInteractionDataKind::StringSelect { values } = &component.data.kind { - let selected_id = values.join(","); + let placeholder = values.iter().map(|_| "?").collect::>().join(","); + let sql = format!( + "UPDATE reminders SET `status` = 'deleted' WHERE id IN ({placeholder})" + ); + let mut query = sqlx::query(&sql); - sqlx::query!( - " - UPDATE reminders SET `status` = 'deleted' WHERE FIND_IN_SET(id, ?) - ", - selected_id - ) - .execute(&data.database) - .await - .unwrap(); + for id in values { + query = query.bind(id); + } + + query.execute(&data.database).await.unwrap(); let reminders = Reminder::from_guild( &ctx,