Refactor search route
Problème :
Lorsque nous remplaçons les attributs du SELECT du SQL statement de la fonction get_selected_elements par * le système
de tri par étiquette cesse de fonctionner correctement (/test/script/run_doctest.sh ***Test Failed*** 6 failures.).
Origine :
Elles sont multiple.
Si number_of_mandatory_labels > 0
Le FROM utilise les tables LABEL et ELEMENT qui possèdent chacun un attribut id. La table qui apparaît en
premier dans le
FROM voit son id disparaître (comportement avec le SGBD sqlite3).
De plus get_selected_elements renvoie les attributs de la table ELEMENT et les attributs des tables jointes
(LABEL et
ELEMENT_LABEL)
Si number_of_mandatory_labels <= 0
La jointure entre ELEMENT et ELEMENT_LABEL crée des doublons chez les éléments qui portent plus d'un label.
Solution :
Elles sont multiple.
Si number_of_mandatory_labels > 0
1. Supprimer la jointure avec LABEL car les id des labels sont déjà disponibles avec la table ELEMENT_LABEL
(id_element,
id_label).
2. Selectionner uniquement les attributs de la table ELEMENT (SELECT ELEMENT.*).
Si number_of_mandatory_labels <= 0
1. Garder le DISCTINCT dans le SELECT (SELECT DISTINCT ELEMENT.id, ELEMENT.*
2. Ajouter une CLAUSE GROUP BY (GROUP BY ELEMENT.id)