Fonctionnalités avec liste de valeurs

Nous avons de plus en plus de features qui peuvent avoir des valeurs différentes, toutes ne sont pas disponibles sur tous les devices.
Afin de pouvoir fournir une information plus précise sur les valeurs possibles pour une features en particulier, nous devons donc être capable de connaître et de stocker ces valeurs.

Sujet source :

Ici nous discuterons des solutions possibles pour réaliser ce chantier.

1 « J'aime »

Pour un premier jet,
je pense qu’il serait donc utile d’ajouter une liste de valeur optionnelle managed_values sur l’objet model feature :

{
 device: {
    ...,
    features: [
      {
        name: '...',
        ...,
        last_value: 2,
        managed_values: [0, 1, 2, 7, 8]
      },
      ....,
    ],
  },
}

Ainsi, le front pourra vérifier si la liste managed_values est renseignée, et conditionner l’afficher selon les valeurs présentes.

Je rappelle qu’on fait du relationnel, donc plusieurs options pour ça:

  • La façon relationnel serait de faire une table device_feature_managed_value qui serait en 1-N avec la table device_feature. C’est plus strict, mais aussi plus lourd à gérer lors de l’insertion/suppression.
  • Soit la façon que tu cites, mais du coup il faut sérialiser/de-sérialiser le tableau à l’écriture / la lecture et stocker ça sous forme de string SQLite. ça ouvre la porte aussi à du n’importe quoi vu qu’il faut gérer la cohérence des données dans la partie applicative, et coder les migrations éventuels de données en JS et pas en SQL.

Les deux façons ont leurs avantages et leurs inconvénients honnêtement !