romulusFR / lifap5-backend-2019-2020

Backend pour le projet 2019-2020 de LIFAP5 en L2 informatique UCBL
https://perso.liris.cnrs.fr/romuald.thion/dokuwiki/doku.php?id=enseignement:lifap5:start
Other
1 stars 3 forks source link

Suppression des questions #23

Closed marbrex closed 4 years ago

marbrex commented 4 years ago

Selon la documentation il n'y a pas de route directe pour supprimer des questions d'un quiz. Ça serait bien de pouvoir supprimer juste une question au lieu de supprimer et après recréer tout le quiz.

Eldar Kasmamytov

Lifeismana commented 4 years ago

duplicate Cf #18

marbrex commented 4 years ago

duplicate Cf #18

Non, parce que pour ajouter/modifier/supprimer les propositions tu dois passer par les questions, mais pour les questions on a des routes directes (on peut par exemple créer des questions directement).

Webcretaire commented 4 years ago

Non ce n'est pas un duplicate, cette issue parle des questions, pas des propositions.

Pour les questions la réponse est la suivante : la route existe, elle a juste échappé à la documentation. Elle fonctionne comme les autres suppressions : un DELETE sur /quizzes/{quizz_id}/questions/{question_id}

marbrex commented 4 years ago

Non ce n'est pas un duplicate, cette issue parle des questions, pas des propositions.

Pour les questions la réponse est la suivante : la route existe, elle a juste échappé à la documentation. Elle fonctionne comme les autres suppression : un DELETE sur /quizzes/{quizz_id}/questions/{question_id}

Ah ok, d'accord.

marbrex commented 4 years ago

Merci pour la réponse.

marbrex commented 4 years ago

Non ce n'est pas un duplicate, cette issue parle des questions, pas des propositions.

Pour les questions la réponse est la suivante : la route existe, elle a juste échappé à la documentation. Elle fonctionne comme les autres suppressions : un DELETE sur /quizzes/{quizz_id}/questions/{question_id}

Si en utilisant ce méthode on supprime une question qui n'est pas la dernière dans le quiz, après on peut rencontrer des problèmes, comme par exemple la création d'une nouvelle question (si on utilise Array.length comme identifiant pour creer une question).

Par exemple, j'ai un quiz avec 3 questions, je supprime la deuxième question, et je me retrouve dans la situation où Array.length est 2. Si je veux ajouter une autre question après et j'utilise Array.length comme ID (je pense la plupart l'utilise), j'ai une erreur, car questions[2] existe déjà.

marbrex commented 4 years ago

Pour gérer ce problème on doit changer les identifiants de toutes les questions qui suivent? Ou au moment de la création chercher les "espaces vides" dans le tableau ?

Webcretaire commented 4 years ago

C'est effectivement à vous de gérer les ID des questions (contrairement à ceux des quizz qui sont auto-générés). Donc tu as tout à fait raison, utiliser Array.length pour attribuer un ID est dangereux, il faut à minima vérifier que l'ID n'existe pas déjà

Pour gérer ce problème il y a de nombreuses solutions, dans la mesure où c'est vous qui gérez les ID des questions c'est à vous de choisir (tu peux chercher le premier ID non-utilisé par exemple, ou partir d'Array.length et incrémenter tant qu'il y a conflit, etc.). En tout cas pour le backend ça n'a pas d'importance s'il y a des "trous" dans les ID des questions, il n'y a que les doublons qui sont interdits (pour un même quizz bien sûr)

marbrex commented 4 years ago

D'accord! Merci

romulusFR commented 4 years ago

C'est fait sur la v 1.0.6. Je la passe en prod là