use serde::{Deserialize, Serialize}; use crate::{ commands::todo::show_todo_page, utils::{Extract, Recordable}, Context, Error, }; #[derive(Serialize, Deserialize, Extract)] pub struct Options; impl Recordable for Options { async fn run(self, ctx: Context<'_>) -> Result<(), Error> { let values = sqlx::query!( " SELECT id, value FROM todos WHERE guild_id = ? ", ctx.guild_id().unwrap().get(), ) .fetch_all(&ctx.data().database) .await .unwrap() .iter() .map(|row| (row.id as usize, row.value.clone())) .collect::>(); let resp = show_todo_page(&values, 0, None, None, ctx.guild_id().map(|g| g.get())); ctx.send(resp).await?; Ok(()) } } /// View and remove from the server todo list #[poise::command( slash_command, rename = "view", guild_only = true, identifying_name = "todo_guild_view", default_member_permissions = "MANAGE_GUILD" )] pub async fn view(ctx: Context<'_>) -> Result<(), Error> { (Options {}).run(ctx).await }