from ..connection import connect from ..quote_ident import quote_ident from .row_columns_and_values import row_columns_and_values from .ensure_player_id_column import ensure_player_id_column from .resolve_row_player_key import resolve_row_player_key, PLAYER_SHARED def update_row(slug, definition, row_id, form_data, player_id=PLAYER_SHARED): """CRUD — Update : ré-enregistre une ligne existante avec les nouvelles valeurs saisies dans le même formulaire généré que pour la création. Filtre aussi par player_id (voir get_row.py — même garde-fou contre un row_id d'un autre joueur).""" ensure_player_id_column(slug, definition["table_name"]) key = resolve_row_player_key(definition, player_id) cols, values = row_columns_and_values(definition, form_data) conn = connect(slug) set_clause = ", ".join(f"{quote_ident(c)} = ?" for c in cols) conn.execute( f"UPDATE {definition['table_name']} SET {set_clause} WHERE id = ? AND player_id = ?", values + [row_id, key], ) conn.commit() conn.close()