import json import db from .ensure_animation_schema import ensure_animation_schema # Champs modifiables après création — le déplacement/redimensionnement à la # souris dans le panneau timeline n'envoie que start_time/duration, le # formulaire d'édition du clip peut envoyer n'importe lequel des autres. _UPDATABLE_FIELDS = { "kind", "animate_name", "start_time", "duration", "delay", "easing", "iteration_count", } def update_animation_clip(slug, clip_id, **fields): ensure_animation_schema(slug) sets, vals = [], [] for key, value in fields.items(): if key == "custom_keyframes": sets.append("custom_keyframes = ?") vals.append(json.dumps(value) if value else None) elif key in _UPDATABLE_FIELDS and value is not None: if key in ("start_time", "duration", "delay"): value = float(value) sets.append(f"{key} = ?") vals.append(value) if not sets: return vals.append(clip_id) conn = db.connect(slug) conn.execute(f"UPDATE _animation_clips SET {', '.join(sets)} WHERE id = ?", vals) conn.commit() conn.close()