MCPcopy Create free account
hub / github.com/astercloud/aster / handleTodoDelete

Method handleTodoDelete

server/handlers/websocket.go:727–772  ·  view source on GitHub ↗

handleTodoDelete handles todo deletion

(wsConn *WebSocketConnection, payload map[string]any)

Source from the content-addressed store, hash-verified

725
726// handleTodoDelete handles todo deletion
727func (h *WebSocketHandler) handleTodoDelete(wsConn *WebSocketConnection, payload map[string]any) {
728 listName := "default"
729 if name, ok := payload["list_name"].(string); ok && name != "" {
730 listName = name
731 }
732
733 todoID, ok := payload["id"].(string)
734 if !ok {
735 h.sendError(wsConn, "missing_todo_id", "todo id is required")
736 return
737 }
738
739 // 加载任务列表
740 todoList, err := h.todoManager.LoadTodoList(listName)
741 if err != nil {
742 h.sendError(wsConn, "list_not_found", fmt.Sprintf("Todo list '%s' not found", listName))
743 return
744 }
745
746 // 查找并删除任务
747 deleted := false
748 for i, existingTodo := range todoList.Todos {
749 if existingTodo.ID == todoID {
750 todoList.Todos = append(todoList.Todos[:i], todoList.Todos[i+1:]...)
751 todoList.UpdatedAt = time.Now()
752 deleted = true
753 break
754 }
755 }
756
757 if !deleted {
758 h.sendError(wsConn, "todo_not_found", fmt.Sprintf("Todo with id '%s' not found", todoID))
759 return
760 }
761
762 // 保存列表
763 if err := h.todoManager.StoreTodoList(todoList); err != nil {
764 h.sendError(wsConn, "save_failed", fmt.Sprintf("Failed to save todo list: %v", err))
765 return
766 }
767
768 // 广播给所有连接
769 h.broadcastToAll("todo_deleted", map[string]any{
770 "id": todoID,
771 })
772}
773
774// handleToolControl 处理工具控制指令
775func (h *WebSocketHandler) handleToolControl(wsConn *WebSocketConnection, payload map[string]any) {

Callers 1

handleMessageMethod · 0.95

Calls 4

sendErrorMethod · 0.95
broadcastToAllMethod · 0.95
LoadTodoListMethod · 0.65
StoreTodoListMethod · 0.65

Tested by

no test coverage detected