Start work on todo list support for dashboard

This commit is contained in:
jude
2024-04-06 14:27:58 +01:00
parent b951db3f55
commit 9989ab3b35
8 changed files with 170 additions and 5 deletions

View File

@ -145,6 +145,10 @@ pub async fn initialize(
routes::dashboard::api::guild::create_guild_reminder,
routes::dashboard::api::guild::get_reminders,
routes::dashboard::api::guild::edit_reminder,
routes::dashboard::api::guild::create_todo,
routes::dashboard::api::guild::get_todo,
routes::dashboard::api::guild::update_todo,
routes::dashboard::api::guild::delete_todo,
routes::dashboard::export::export_reminders,
routes::dashboard::export::export_reminder_templates,
routes::dashboard::export::export_todos,

View File

@ -3,6 +3,7 @@ mod emojis;
mod reminders;
mod roles;
mod templates;
mod todos;
use std::env;
@ -16,6 +17,7 @@ use serenity::{
model::id::{GuildId, RoleId},
};
pub use templates::*;
pub use todos::{create_todo, delete_todo, get_todo, update_todo};
use crate::web::{check_authorization, routes::JsonResult};

View File

@ -0,0 +1,66 @@
use rocket::{
delete, get,
http::CookieJar,
patch, post,
serde::json::{json, Json},
State,
};
use serde::Deserialize;
use serenity::prelude::Context;
use crate::web::{check_authorization, guards::transaction::Transaction, routes::JsonResult};
#[derive(Deserialize)]
struct CreateTodo {
channel_id: Option<u64>,
value: String,
}
#[post("/api/guild/<id>/todos", data = "<todo>")]
pub async fn create_todo(
id: u64,
todo: Json<CreateTodo>,
cookies: &CookieJar<'_>,
ctx: &State<Context>,
mut transaction: Transaction<'_>,
) -> JsonResult {
check_authorization(cookies, ctx.inner(), id).await?;
Ok(json!({}))
}
#[get("/api/guild/<id>/todos")]
pub async fn get_todo(
id: u64,
cookies: &CookieJar<'_>,
ctx: &State<Context>,
mut transaction: Transaction<'_>,
) -> JsonResult {
check_authorization(cookies, ctx.inner(), id).await?;
Ok(json!([]))
}
#[patch("/api/guild/<id>/todos")]
pub async fn update_todo(
id: u64,
cookies: &CookieJar<'_>,
ctx: &State<Context>,
mut transaction: Transaction<'_>,
) -> JsonResult {
check_authorization(cookies, ctx.inner(), id).await?;
Ok(json!({}))
}
#[delete("/api/guild/<id>/todos")]
pub async fn delete_todo(
id: u64,
cookies: &CookieJar<'_>,
ctx: &State<Context>,
mut transaction: Transaction<'_>,
) -> JsonResult {
check_authorization(cookies, ctx.inner(), id).await?;
Ok(json!({}))
}