diff --git a/app/api.py b/app/api.py index d014059..026e0b2 100644 --- a/app/api.py +++ b/app/api.py @@ -74,6 +74,33 @@ def delete_graph(graph_id): return jsonify({"error": f"Не удалось удалить граф {graph_id}."}, 500) +@api.route('/api/graphs', methods=['DELETE']) +def delete_all_graphs(): + """API endpoint для удаления всех графов.""" + if graph_history_manager.delete_all_graphs(): + return jsonify({"message": "Все графы успешно удалены."}) + else: + return jsonify({"error": "Не удалось удалить все графы."}, 500) + + +@api.route('/api/graphs//rename', methods=['PATCH']) +def rename_graph(graph_id): + """API endpoint для переименования графа.""" + if not graph_id: + return jsonify({"error": "Не указан ID графа для переименования."}, 400) + + data = request.get_json() + new_title = data.get("title") + + if not new_title or not new_title.strip(): + return jsonify({"error": "Название не может быть пустым."}, 400) + + if graph_history_manager.rename_graph(graph_id, new_title.strip()): + return jsonify({"message": f"Граф {graph_id} успешно переименован."}) + else: + return jsonify({"error": f"Не удалось переименовать граф {graph_id}."}, 500) + + @api.route('/api/graphs//nodes/', methods=['DELETE']) def delete_graph_node(graph_id, node_id): """API endpoint для удаления узла графа.""" diff --git a/app/graph_history_manager.py b/app/graph_history_manager.py index 7873aca..914bf4c 100644 --- a/app/graph_history_manager.py +++ b/app/graph_history_manager.py @@ -326,6 +326,34 @@ class GraphHistoryManager: print(f"Ошибка при удалении графа: {e}") return False + def delete_all_graphs(self) -> bool: # ДОБАВЛЕНО + """Удаляет все графы из базы данных.""" + with self._get_connection() as conn: + cursor = conn.cursor() + try: + cursor.execute("DELETE FROM graphs") + conn.commit() + return True + except Exception as e: + conn.rollback() + print(f"Ошибка при удалении всех графов: {e}") + return False + + def rename_graph(self, graph_id: str, new_title: str) -> bool: # ДОБАВЛЕНО + """Переименовывает граф, устанавливая пользовательское название.""" + with self._get_connection() as conn: + cursor = conn.cursor() + try: + cursor.execute( + "UPDATE graphs SET title = ?, title_generated = TRUE WHERE id = ?", + (new_title, graph_id)) + conn.commit() + return cursor.rowcount > 0 + except Exception as e: + conn.rollback() + print(f"Ошибка при переименовании графа: {e}") + return False + def delete_node(self, graph_id: str, node_id: str) -> bool: """ Удаляет узел из графа и переподключает его родителей к его детям.