From 76ce8b0966e11c6e5275b66d06e80021b1bd6cdf Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 15 Nov 2025 05:57:16 +0000 Subject: [PATCH] =?UTF-8?q?Fix:=20Erreurs=20500=20lors=20mise=20=C3=A0=20j?= =?UTF-8?q?our=20notes=20-=20SQL=20dynamique=20non=20converti?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problème: PUT /api/notes/:id retourne 500 Internal Server Error - Script convert-sql-to-postgres.js a manqué les requêtes SQL dynamiques - Routes utilisaient encore syntaxe SQLite (?) dans les updates dynamiques - Erreur: "bind message supplies 2 parameters, but prepared statement requires 0" Fichiers corrigés: - routes/notes.routes.js:219-236 (PUT /api/notes/:id) - routes/notes.routes.js:444-469 (PUT /api/notes/todos/:todoId) - routes/todos.routes.js:92-111 (PUT /api/todos/:id) Solution: - Ajout compteur paramCount pour numérotation PostgreSQL - Remplacement ? par $1, $2, $3... dans updates dynamiques - Exemple: 'title = ?' → `title = $${paramCount}` Résultat: Notes peuvent maintenant être éditées sans erreur 500 --- routes/notes.routes.js | 23 ++++++++++++++++------- routes/todos.routes.js | 10 +++++++--- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/routes/notes.routes.js b/routes/notes.routes.js index 8c8e32c..4d7035c 100644 --- a/routes/notes.routes.js +++ b/routes/notes.routes.js @@ -214,21 +214,25 @@ router.put('/:id', const updates = []; const params = []; + let paramCount = 0; if (title !== undefined) { - updates.push('title = ?'); + paramCount++; + updates.push(`title = $${paramCount}`); params.push(title); } if (content !== undefined) { - updates.push('content = ?'); + paramCount++; + updates.push(`content = $${paramCount}`); params.push(content); } if (updates.length > 0) { updates.push('updated_at = CURRENT_TIMESTAMP'); + paramCount++; params.push(req.params.id); - await runQuery(`UPDATE notes SET ${updates.join(', ')} WHERE id = ?`, params); + await runQuery(`UPDATE notes SET ${updates.join(', ')} WHERE id = $${paramCount}`, params); } res.json({ message: 'Note modifiée avec succès' }); @@ -439,23 +443,28 @@ router.put('/todos/:todoId', const updates = []; const params = []; + let paramCount = 0; if (text !== undefined) { - updates.push('text = ?'); + paramCount++; + updates.push(`text = $${paramCount}`); params.push(text); } if (completed !== undefined) { - updates.push('completed = ?'); + paramCount++; + updates.push(`completed = $${paramCount}`); params.push(completed ? 1 : 0); } if (position !== undefined) { - updates.push('position = ?'); + paramCount++; + updates.push(`position = $${paramCount}`); params.push(position); } if (updates.length > 0) { + paramCount++; params.push(req.params.todoId); - await runQuery(`UPDATE note_todos SET ${updates.join(', ')} WHERE id = ?`, params); + await runQuery(`UPDATE note_todos SET ${updates.join(', ')} WHERE id = $${paramCount}`, params); await runQuery('UPDATE notes SET updated_at = CURRENT_TIMESTAMP WHERE id = $1', [todo.note_id]); } diff --git a/routes/todos.routes.js b/routes/todos.routes.js index a159b88..f669cd6 100644 --- a/routes/todos.routes.js +++ b/routes/todos.routes.js @@ -91,19 +91,23 @@ router.put('/:id', const updates = []; const params = []; + let paramCount = 0; if (text !== undefined) { - updates.push('text = ?'); + paramCount++; + updates.push(`text = $${paramCount}`); params.push(text); } if (completed !== undefined) { - updates.push('completed = ?'); + paramCount++; + updates.push(`completed = $${paramCount}`); params.push(completed ? 1 : 0); } if (updates.length > 0) { + paramCount++; params.push(req.params.id); - await runQuery(`UPDATE global_todos SET ${updates.join(', ')} WHERE id = ?`, params); + await runQuery(`UPDATE global_todos SET ${updates.join(', ')} WHERE id = $${paramCount}`, params); } res.json({ message: 'Todo modifié avec succès' });