import json from db.supports import connect_support from ..labels.element_kind_labels import element_default_attributes def add_document_element(slug: str, kind: str, parent_id: int | None = None) -> int: """Ajoute un élément en fin de son groupe de frères (même parent_id — NULL pour un élément top-niveau, l'id d'une rangée pour un enfant de cette rangée, voir docs/plan/PLAN.md). Attributs de départ posés via element_default_attributes(kind).""" conn = connect_support(slug) max_row = conn.execute( "SELECT MAX(order_index) AS m FROM _document_elements WHERE parent_id IS ?", (parent_id,) ).fetchone() order_index = (max_row["m"] or 0) + 1 if max_row and max_row["m"] is not None else 0 conn.execute( "INSERT INTO _document_elements (parent_id, kind, order_index, attributes) VALUES (?, ?, ?, ?)", (parent_id, kind, order_index, json.dumps(element_default_attributes(kind))), ) element_id = int(conn.execute("SELECT last_insert_rowid() AS id").fetchone()["id"]) conn.commit() conn.close() return element_id