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,21 +282,52 @@ 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 = ?
", ",
selector.user_id, uid,
selector.channel_id, )
selector.guild_id, .fetch_all(&data.database)
) .await
.fetch_all(&data.database) .unwrap()
.await .iter()
.unwrap() .map(|row| (row.id as usize, row.value.clone()))
.iter() .collect::<Vec<(usize, String)>>()
.map(|row| (row.id as usize, row.value.clone())) } else if let Some(cid) = selector.channel_id {
.collect::<Vec<(usize, String)>>(); 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.guild_id,
)
.fetch_all(&data.database)
.await
.unwrap()
.iter()
.map(|row| (row.id as usize, row.value.clone()))
.collect::<Vec<(usize, String)>>()
};
let resp = show_todo_page( let resp = show_todo_page(
&values, &values,