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 insert_row(slug, definition, form_data, player_id=PLAYER_SHARED): """Feature 3 : enregistre en base les données saisies dans le formulaire généré à partir de la définition d'objet.""" 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) cols = cols + ["player_id"] values = values + [key] conn = connect(slug) placeholders = ["?"] * len(cols) quoted_cols = ", ".join(quote_ident(c) for c in cols) sql = f"INSERT INTO {definition['table_name']} ({quoted_cols}) VALUES ({', '.join(placeholders)})" conn.execute(sql, values) new_id = conn.execute("SELECT last_insert_rowid() AS id").fetchone()["id"] conn.commit() conn.close() return new_id