Fix todo list deletion not working properly

This commit is contained in:
jude 2024-05-03 16:21:27 +01:00
parent c277f85c2a
commit ef10902c1e

View File

@ -282,13 +282,43 @@ impl ComponentDataModel {
.await .await
.unwrap(); .unwrap();
let values = sqlx::query!( let values = if let Some(uid) = selector.user_id {
// fucking braindead mysql use <=> instead of = for null comparison sqlx::query!(
" "
SELECT id, value FROM todos WHERE user_id <=> ? AND channel_id <=> ? AND guild_id <=> ? SELECT todos.id, value FROM todos
INNER JOIN users ON todos.user_id = users.id
WHERE users.user = ?
",
uid,
)
.fetch_all(&data.database)
.await
.unwrap()
.iter()
.map(|row| (row.id as usize, row.value.clone()))
.collect::<Vec<(usize, String)>>()
} else if let Some(cid) = selector.channel_id {
sqlx::query!(
"
SELECT todos.id, value FROM todos
INNER JOIN channels ON todos.channel_id = channels.id
WHERE channels.channel = ?
",
cid,
)
.fetch_all(&data.database)
.await
.unwrap()
.iter()
.map(|row| (row.id as usize, row.value.clone()))
.collect::<Vec<(usize, String)>>()
} else {
sqlx::query!(
"
SELECT todos.id, value FROM todos
INNER JOIN guilds ON todos.guild_id = guilds.id
WHERE guilds.guild = ?
", ",
selector.user_id,
selector.channel_id,
selector.guild_id, selector.guild_id,
) )
.fetch_all(&data.database) .fetch_all(&data.database)
@ -296,7 +326,8 @@ impl ComponentDataModel {
.unwrap() .unwrap()
.iter() .iter()
.map(|row| (row.id as usize, row.value.clone())) .map(|row| (row.id as usize, row.value.clone()))
.collect::<Vec<(usize, String)>>(); .collect::<Vec<(usize, String)>>()
};
let resp = show_todo_page( let resp = show_todo_page(
&values, &values,