D'un point de vue sémantique : un badge est dans un niveau qui lui-même est dans un défi.
Quand on crée un défi, le Json reçu par le serveur a la même structure (challenge -> level -> badge).
C'est cette requête, si elle est valide, qui sera sérialisée en BDD. L'idée est que pour construire un challenge il y a un schéma json.
Quand un utilisateur relève un défi, et le réussit, on lui décerne un badge (le badge qu'il a mérité compte tenu de sa performance). Quand on persiste en BDD le défi et l'utilisateur, il y a "copie" du badge, c'est à dire qu'il y a deux objets Badge : un dans l'utilisateur et un dans le niveau du défi. Cela veut dire qu'on va avoir deux documents ayant la même description d'un badge.
Le problème de cela est que si un badge est jugé problématique car pas assez de reward ou trop de reward, il ne suffira pas de modifier la description du badge dans le défi puisque les utilisateurs ayant eu le badge auront eu "une copie de la description" dudit badge.
Il faudra donc gérer des "clés étrangères" entre collections.
Il existe un ORM Jackson / MongoDB (#openClosePrinciple #risque) : http://mongojack.org/dbrefs.html
D'un point de vue sémantique : un badge est dans un niveau qui lui-même est dans un défi. Quand on crée un défi, le Json reçu par le serveur a la même structure (challenge -> level -> badge). C'est cette requête, si elle est valide, qui sera sérialisée en BDD. L'idée est que pour construire un challenge il y a un schéma json.
Quand un utilisateur relève un défi, et le réussit, on lui décerne un badge (le badge qu'il a mérité compte tenu de sa performance). Quand on persiste en BDD le défi et l'utilisateur, il y a "copie" du badge, c'est à dire qu'il y a deux objets Badge : un dans l'utilisateur et un dans le niveau du défi. Cela veut dire qu'on va avoir deux documents ayant la même description d'un badge.
Le problème de cela est que si un badge est jugé problématique car pas assez de reward ou trop de reward, il ne suffira pas de modifier la description du badge dans le défi puisque les utilisateurs ayant eu le badge auront eu "une copie de la description" dudit badge.
Il faudra donc gérer des "clés étrangères" entre collections. Il existe un ORM Jackson / MongoDB (#openClosePrinciple #risque) : http://mongojack.org/dbrefs.html