Skip to content

Notes Importantes

  1. Soft Delete : Toutes les entités héritent de BaseEntity qui inclut un champ deletedAt pour la suppression logique.

  2. Indexation : La plupart des champs importants sont indexés pour optimiser les performances de recherche.

  3. Relations : Les relations entre entités sont bien définies avec des contraintes de clés étrangères.

  4. Sécurité : Certains champs sensibles (mots de passe, tokens) sont marqués avec select: false pour éviter leur exposition accidentelle.

  5. JSONB : Plusieurs champs utilisent le type jsonb pour stocker des données structurées flexibles.

  6. Enums : De nombreux champs utilisent des énumérations pour garantir la cohérence des données. Toutes les valeurs possibles sont documentées dans ce document.

  7. Héritage : Toutes les entités héritent de BaseEntity qui fournit les champs communs (id, timestamps, soft delete).

  8. Migration BigQuery : Les champs marqués avec des équivalences BigQuery proviennent de l'ancienne base de données et sont migrés via les scripts d'import.

  9. Mapping des données : Certains champs nécessitent des transformations lors de la migration :

  10. profile.gendergender (mapping des valeurs françaises vers anglaises)

  11. profile.roleroles (conversion en tableau)
  12. services.password.bcryptpassword
  13. emails[0].verifiedactivated
  14. profile.lyceeStudies[0].filierefiliere (premier élément du tableau)
  15. profile.studies[] → multiples parcoursEclaireur (un par étude)

  16. Champs JSON : Plusieurs champs sont stockés en JSONB et proviennent de champs JSON de BigQuery :

    • profile.environnementenvironnement
    • profile.matieresmatieres
    • profile.lyceeStudieslyceeStudies
    • algoInputsurveyResult
    • algoResultsalgoResult
  17. Types de données PostgreSQL :

    • timestamptz : Timestamp avec timezone (utilisé pour createdAt, updatedAt, deletedAt)
    • jsonb : Données JSON binaires (utilisé pour les champs flexibles)
    • text : Texte de longueur variable illimitée
    • varchar(n) : Chaîne de caractères de longueur maximale n
    • boolean : Booléen
    • integer : Entier
    • date : Date (sans heure)
  18. Valeurs par défaut : De nombreux champs ont des valeurs par défaut définies dans le code. Ces valeurs sont documentées dans ce document.

  19. Propriétés virtuelles : Certaines entités ont des propriétés virtuelles (comme fullname dans User, address dans MvlsLyceen) qui sont calculées à l'exécution et ne sont pas stockées en base de données.