Added commands to remove projects and tasks
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
import discord
|
import discord
|
||||||
from discord import app_commands
|
from discord import app_commands
|
||||||
from .database import add_project, get_project_id, add_task_to_project, update_task, list_projects, list_tasks_for_project
|
from .database import add_project, get_project_id, get_project_name, add_task_to_project, update_task, list_projects, list_tasks_for_project, remove_task, remove_project
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -32,6 +32,16 @@ class ProjectCommands(app_commands.Group):
|
|||||||
await interaction.response.send_message("Failed to retrieve projects.", ephemeral=True)
|
await interaction.response.send_message("Failed to retrieve projects.", ephemeral=True)
|
||||||
logger.error(f"Error in list_projects: {e}")
|
logger.error(f"Error in list_projects: {e}")
|
||||||
|
|
||||||
|
@app_commands.command(name="remove", description="Remove a specific project and all its tasks.")
|
||||||
|
async def remove_project_command(self, interaction: discord.Interaction, project_id: int):
|
||||||
|
try:
|
||||||
|
await remove_project(project_id)
|
||||||
|
await interaction.response.send_message(f"Project ID {project_id} and all associated tasks have been successfully removed.")
|
||||||
|
logger.info(f"Project ID {project_id} and all associated tasks removed successfully.")
|
||||||
|
except Exception as e:
|
||||||
|
await interaction.response.send_message("Failed to remove the project.", ephemeral=True)
|
||||||
|
logger.error(f"Error in remove_project_command: {e}")
|
||||||
|
|
||||||
class TaskCommands(app_commands.Group):
|
class TaskCommands(app_commands.Group):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__(name="task", description="Manage tasks.")
|
super().__init__(name="task", description="Manage tasks.")
|
||||||
@ -88,6 +98,16 @@ class TaskCommands(app_commands.Group):
|
|||||||
await interaction.response.send_message(f"Failed to retrieve tasks for project ID {project_id}.", ephemeral=True)
|
await interaction.response.send_message(f"Failed to retrieve tasks for project ID {project_id}.", ephemeral=True)
|
||||||
logger.error(f"Error in list_tasks: {e}")
|
logger.error(f"Error in list_tasks: {e}")
|
||||||
|
|
||||||
|
@app_commands.command(name="remove", description="Remove a specific task.")
|
||||||
|
async def remove_task_command(self, interaction: discord.Interaction, task_id: int):
|
||||||
|
try:
|
||||||
|
await remove_task(task_id)
|
||||||
|
await interaction.response.send_message(f"Task ID {task_id} has been successfully removed.")
|
||||||
|
logger.info(f"Task ID {task_id} removed successfully.")
|
||||||
|
except Exception as e:
|
||||||
|
await interaction.response.send_message("Failed to remove the task.", ephemeral=True)
|
||||||
|
logger.error(f"Error in remove_task_command: {e}")
|
||||||
|
|
||||||
class DollyTracker(app_commands.Group, name="dolly", description="Dolly the Project Tracker."):
|
class DollyTracker(app_commands.Group, name="dolly", description="Dolly the Project Tracker."):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
@ -69,3 +69,14 @@ async def list_tasks_for_project(project_id):
|
|||||||
cursor = await db.execute("SELECT id, description, assignee, deadline, status, priority FROM tasks WHERE project_id = ?", (project_id,))
|
cursor = await db.execute("SELECT id, description, assignee, deadline, status, priority FROM tasks WHERE project_id = ?", (project_id,))
|
||||||
tasks = await cursor.fetchall()
|
tasks = await cursor.fetchall()
|
||||||
return tasks
|
return tasks
|
||||||
|
|
||||||
|
async def remove_task(task_id):
|
||||||
|
async with aiosqlite.connect(DATABASE) as db:
|
||||||
|
await db.execute("DELETE FROM tasks WHERE id = ?", (task_id,))
|
||||||
|
await db.commit()
|
||||||
|
|
||||||
|
async def remove_project(project_id):
|
||||||
|
async with aiosqlite.connect(DATABASE) as db:
|
||||||
|
await db.execute("DELETE FROM tasks WHERE project_id = ?", (project_id,)) # Remove all tasks under the project
|
||||||
|
await db.execute("DELETE FROM projects WHERE id = ?", (project_id,))
|
||||||
|
await db.commit()
|
Reference in New Issue
Block a user