Remove usages of FIND_IN_SET

FIND_IN_SET doesn't make use of indexes
This commit is contained in:
jude
2024-10-10 19:06:56 +01:00
parent 137ae6f24b
commit 6f223b1bc2
7 changed files with 163 additions and 156 deletions

View File

@ -153,12 +153,12 @@ impl ComponentDataModel {
ComponentDataModel::DelSelector(selector) => {
if let ComponentInteractionDataKind::StringSelect { values } = &component.data.kind
{
let placeholder = values.iter().map(|_| "?").collect::<Vec<&str>>().join(",");
let placeholder = vec!["?"; values.len()].join(",");
let sql = format!(
"UPDATE reminders SET `status` = 'deleted' WHERE id IN ({placeholder})"
);
let mut query = sqlx::query(&sql);
let mut query = sqlx::query(&sql);
for id in values {
query = query.bind(id);
}
@ -269,17 +269,15 @@ impl ComponentDataModel {
if let ComponentInteractionDataKind::StringSelect { values } =
&component.data.kind
{
let selected_id = values.join(",");
let placeholder = vec!["?"; values.len()].join(",");
let sql = format!("DELETE FROM todos WHERE id IN ({placeholder})");
sqlx::query!(
"
DELETE FROM todos WHERE FIND_IN_SET(id, ?)
",
selected_id
)
.execute(&data.database)
.await
.unwrap();
let mut query = sqlx::query(&sql);
for id in values {
query = query.bind(id);
}
query.execute(&data.database).await.unwrap();
let values = if let Some(uid) = selector.user_id {
sqlx::query!(