Add DELETE graphs and PATCH graphs..rename endpoints

This commit is contained in:
dimitrievgs 2025-10-14 21:55:48 +03:00
parent 196201c681
commit 2a53c4de78
2 changed files with 55 additions and 0 deletions

View File

@ -74,6 +74,33 @@ def delete_graph(graph_id):
return jsonify({"error": f"Не удалось удалить граф {graph_id}."}, 500) 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/<graph_id>/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/<graph_id>/nodes/<node_id>', methods=['DELETE']) @api.route('/api/graphs/<graph_id>/nodes/<node_id>', methods=['DELETE'])
def delete_graph_node(graph_id, node_id): def delete_graph_node(graph_id, node_id):
"""API endpoint для удаления узла графа.""" """API endpoint для удаления узла графа."""

View File

@ -326,6 +326,34 @@ class GraphHistoryManager:
print(f"Ошибка при удалении графа: {e}") print(f"Ошибка при удалении графа: {e}")
return False 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: def delete_node(self, graph_id: str, node_id: str) -> bool:
""" """
Удаляет узел из графа и переподключает его родителей к его детям. Удаляет узел из графа и переподключает его родителей к его детям.