Wisembly / Totem

Changeset calculator between two states of a data
http://wisembly.github.io/Totem
MIT License
76 stars 6 forks source link

Compare a diff by identifier #21

Closed rgazelot closed 10 years ago

rgazelot commented 10 years ago

Bon c'est un premier jet, c'est moche, mais ça fait le job dont j'ai besoin. A voir ensemble comment implémenter ça bien.

rgazelot commented 10 years ago

De plus, la comparaison de base écrase les valeurs du deuxième tableau dans le premier pour une même position avec le array_replace. C'est utile dans certains cas mais il faut aussi un mode qui ne tient pas compte des positions et qui donne un change uniquement sur la présence ou non des valeurs.

coveralls commented 10 years ago

Coverage Status

Coverage decreased (-0.57%) when pulling 27549e9eff28f765facd9954d472788ae86cecfe on diff-callback into 5b6994f9649fd5f830f004ea8782fdee20b39043 on master.

Taluu commented 10 years ago

je pense que ça a grandement à voir avec #19. Du coup, j'essaierai de m'y pencher dès que possible, car cette PR est beaucoup trop spécifique à notre cas d'utilisation... :(

guillaumepotier commented 10 years ago

Je suis pas certain que cette PR soit si spécifique à notre cas. Clairement le diff d'arrays est problématique. Dans le cas d'un array simple ou dans d'autres cas d'usage, on peut réellement souhaiter l'implem actuelle, et comparer clé à clé.

Par contre, on peut avoir des Collections (array d'objets) où l'ordre importe peu mais plutôt ce qu'il se passe au niveau des objets de cette collection. Dans ce cas il faut être en mesure d'identifier ces objets et regarder si ya eu des changes, des remove ou des add.

Taluu commented 10 years ago

Dans ce cas, je pense qu'on peut éventuellement mettre en place un CollectionSnapshot, mais le problème étant que ce sera pas récursif (comment déterminer qu'il s'agit d'une collection ? Comment déterminer la clé primaire de chaque élément de la collection ? Qu'est-ce qui garantit que ce sera toujours cette clé ? Et probablement d'autre questions qui ne me viennent pas tout de suite en tête).

Le truc du CollectionSnapshot sera en fait de redéfinir l'array... En mettant en clé la PK trouvée. Ce qui nous affranchira de la manip mise en exergue dans cette PR. Et pourra éventuellement régler #19 au passage. Mais encore une fois, le probème étant que je ne peux descendre facilement en récursivité dedans...

Taluu commented 10 years ago

Le comportement est normalement réimplémenté dans #22, je ferme donc. Je supprime aussi la branche vu qu'en interne on en a plus besoin (j'ai vu repasser le requirement du composer de dev-diff-callback à ~1.3 à nouveau).