import db from .ensure_scene_schema import ensure_scene_schema from ..animations.ensure_animation_schema import ensure_animation_schema from ..flow.ensure_flow_schema import ensure_flow_schema def delete_scene_object(slug, object_id): """Supprime un objet de scène ET les nœuds de logique qui le référencent (trigger_object_id/target_object_id/cond_element_a/ cond_element_b — aucun n'a de contrainte FK, voir ensure_flow_schema.py) : un nœud qui vise un objet supprimé n'a plus de sens, même patron que screens/elements/delete_element.py pour le DOM. Nettoie aussi ses clips d'animation (_animation_clips.element_id, voir ensure_animation_schema.py — réutilisé tel quel par animation-timeline.js pour les deux éditeurs, sans contrainte FK).""" ensure_scene_schema(slug) ensure_flow_schema(slug) ensure_animation_schema(slug) conn = db.connect(slug) conn.execute( """DELETE FROM _flow_nodes WHERE trigger_object_id = ? OR target_object_id = ? OR cond_element_a = ? OR cond_element_b = ?""", (object_id, object_id, object_id, object_id), ) conn.execute("DELETE FROM _animation_clips WHERE element_id = ?", (object_id,)) conn.execute("DELETE FROM _scene_objects WHERE id = ?", (object_id,)) conn.commit() conn.close()