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 favorieclaireur: 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
Userou d'unePisteentraîne la suppression en cascade des favoris associés
Relations :
user: Utilisateur (lycéen) ayant ajouté le favoripiste: 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
Userou d'unArticleentraîne la suppression en cascade des favoris associés
Relations :
user: Utilisateur (lycéen) ayant ajouté le favoriarticle: Article mis en favori
Filtrage par catégorie :
GET /favorite-articles?category=Réussir son orientationGET /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).