Nous souhaitons stocker une propriété dans un magasin de données qui assure le suivi de l'ordre d'affichage des clients. Cependant, les clients seront en mesure de déplacer des entités, et nous devons ensuite mettre à jour l'ordre d'affichage.Quelle est la meilleure pratique pour stocker et mettre à jour l'ordre d'affichage dans une API REST?
La solution la plus évidente que je peux penser est juste de stocker les ordres d'affichage comme des entiers dans la même séquence que les entités sont affichées. Le problème avec cette solution est que si nous devons déplacer le dernier élément et le mettre en premier, nous aurons besoin de mettre à jour tous les éléments de la liste.
L'autre idée que je peux proposer est de stocker l'ordre d'affichage sous la forme d'une séquence avec des espaces comme 1000, 2000, ..., 100 000. Lorsque nous déplaçons des entités, nous donnons toujours la valeur d'affichage les entités que nous mettons entre les deux, donc si nous voulons mettre une entité entre les entités avec la valeur d'affichage 1000 et 2000 nous lui donnerions la valeur d'affichage 1500. Avec cette solution, nous aurions juste à mettre à jour l'entité que nous déménageons, mais si nous manquons de nombres entre deux noeuds, nous devrons faire une sorte de réarrangement affectant plus d'entités. Vous pourriez faire l'écart si grand que cela n'arriverait presque jamais.
Existe-t-il une meilleure pratique pour résoudre ce problème?
Ok, mais avec cette requête vous devez au moins mettre à jour l'entité que vous déplacez, et l'entité que vous mettez après. Beaucoup mieux que d'avoir à mettre à jour plusieurs entités au moins. Je ne vois pas pourquoi les solutions ci-dessus ne fonctionneraient pas avec la recherche de pages? –
@DavidBerg Si vous chargez toute la liste en une fois, puis que vous la montrez à l'utilisateur dans les pages, la solution fonctionnera. Mais si vous voulez charger une seule page d'éléments, il n'y a pas de moyen facile de savoir où cette page commence. – Dialecticus
Hmm, je suppose que cela dépend de la façon dont l'implémentation de la mise en page est faite. La seule fois où cela devient un problème, je le vois si vous allez déplacer un élément vers une autre page. Dans ce cas, vous devrez aussi aller chercher cette page. Ou est-ce que je manque quelque chose ici? –