import db from ..ensure_flow_schema import ensure_flow_schema from .ensure_flow_blocks_schema import ensure_flow_blocks_schema def delete_flow_block(slug, block_id): """Supprime le bloc ET tout ce qu'il contient (nœuds + arêtes) — décision explicite de l'utilisateur, un bloc de logique se comporte comme une fonction qu'on supprime avec son corps. Patron identique à screens/custom_events/delete_custom_event.py, mais scopé à un seul bloc (pas game-wide) : les AUTRES blocs du même écran ne sont pas touchés.""" ensure_flow_schema(slug) ensure_flow_blocks_schema(slug) conn = db.connect(slug) conn.execute( """DELETE FROM _flow_edges WHERE from_node_id IN (SELECT id FROM _flow_nodes WHERE block_id = ?) OR to_node_id IN (SELECT id FROM _flow_nodes WHERE block_id = ?)""", (block_id, block_id), ) conn.execute("DELETE FROM _flow_nodes WHERE block_id = ?", (block_id,)) conn.execute("DELETE FROM _flow_blocks WHERE id = ?", (block_id,)) conn.commit() conn.close()