Skip to content

Entités Favoris

FavoriteEclaireur

Table : favorite-eclaireurs
Description : Stocke les éclaireurs mis en favori par un lycéen

Champ Type Description Champ BigQuery
id number Identifiant unique (hérité de BaseEntity) -
userId number Identifiant de l'utilisateur (lycéen) qui a ajouté le favori -
eclaireurId number Identifiant de l'éclaireur mis en favori -

Contraintes :

  • La paire (userId, eclaireurId) est unique — un lycéen ne peut pas mettre le même éclaireur en favori deux fois
  • La suppression d'un User (lycéen ou éclaireur) entraîne la suppression en cascade des favoris associés

Relations :

  • user : Utilisateur (lycéen) ayant ajouté le favori
  • eclaireur : Utilisateur (éclaireur) mis en favori

FavoritePiste

Table : favorite-pistes
Description : Stocke les pistes d'études mises en favori par un lycéen

Champ Type Description Champ BigQuery
id number Identifiant unique (hérité de BaseEntity) -
userId number Identifiant de l'utilisateur (lycéen) qui a ajouté le favori -
pisteId number Identifiant de la piste mise en favori -

Contraintes :

  • La paire (userId, pisteId) est unique — un lycéen ne peut pas mettre la même piste en favori deux fois
  • La suppression d'un User ou d'une Piste entraîne la suppression en cascade des favoris associés

Relations :

  • user : Utilisateur (lycéen) ayant ajouté le favori
  • piste : Piste d'études mise en favori

Architecture multi-entités

Les favoris suivent le pattern une table par entité (pas de table générique polymorphique). Ce choix garantit : - L'intégrité référentielle via FK et ON DELETE CASCADE natif - Des requêtes simples et type-safe - La cohérence avec la page Favoris qui affiche les types en sections séparées

Pour ajouter les favoris d'une nouvelle entité, reproduire le même pattern : migration + entity + repository + service + controller dans FavoritesModule.


FavoriteArticle

Table : favorite-articles
Description : Stocke les articles mis en favori par un lycéen

Champ Type Description Champ BigQuery
id number Identifiant unique (hérité de BaseEntity) -
userId number Identifiant de l'utilisateur (lycéen) qui a ajouté le favori -
articleId number Identifiant de l'article mis en favori -

Contraintes :

  • La paire (userId, articleId) est unique — un lycéen ne peut pas mettre le même article en favori deux fois
  • La suppression d'un User ou d'un Article entraîne la suppression en cascade des favoris associés

Relations :

  • user : Utilisateur (lycéen) ayant ajouté le favori
  • article : Article mis en favori

Filtrage par catégorie :

  • GET /favorite-articles?category=Réussir son orientation
  • GET /favorite-articles?category=Explore la vie étudiante

La page Favoris affiche deux carousels séparés, un par catégorie (ArticleCategory enum). La page "Voir tout" est partagée : /favoris/articles/:categorySlug (orientation ou vie-etudiante).