Skip to content

Base de Données & Schéma Prisma

Le fichier prisma/schema.prisma est l'unique source de vérité pour la structure des données de l'application. Cette page fournit une analyse détaillée de chaque modèle, de ses champs et de ses relations.

Modèles d'Authentification

Ces modèles sont principalement gérés par la librairie better-auth pour gérer l'identité et les sessions des utilisateurs.

User

Représente un compte administrateur. L'application est conçue pour un administrateur unique.

ChampTypeDescription
idStringIdentifiant unique (CUID). Clé primaire.
emailStringL'adresse e-mail unique de l'utilisateur, utilisée pour la connexion.
passwordStringLe mot de passe haché de l'utilisateur.
campaignsCampaign[]Une relation un-à-plusieurs liant l'utilisateur à toutes les campagnes qu'il a créées.

Autres Modèles d'Auth (Account, Session, etc.)

Ces modèles sont des prérequis standards de better-auth pour la gestion des sessions, les connexions OAuth et les jetons de vérification. Leur structure n'est pas critique pour la logique métier de l'application.


Modèles Métier

C'est le cœur fonctionnel de l'application Mood.

Campaign

Le conteneur de plus haut niveau pour un événement de sondage.

ChampTypeDescription
idIntEntier auto-incrémenté. Clé primaire.
nameStringLe nom descriptif de la campagne (ex: "Feedback Q4").
createdByStringClé étrangère liée à un User.id.
creatorUserLa relation vers le modèle User. onDelete: Cascade assure que si un utilisateur est supprimé, toutes ses campagnes le sont aussi.
archivedBooleanUn drapeau pour l'archivage (soft-delete) des campagnes. Vaut false par défaut.
expiresAtDateTime?Une date optionnelle pour l'auto-archivage de la campagne.
pollLinksPollLink[]Une relation un-à-plusieurs vers tous les liens de sondage générés pour cette campagne.
votesVote[]Une relation directe un-à-plusieurs avec tous les votes, utilisée pour des agrégations globales rapides.

Le lien unique et distribuable pour une équipe ou un manager spécifique au sein d'une campagne.

ChampTypeDescription
idStringIdentifiant unique (UUID). Clé primaire. Les UUIDs sont excellents pour les identifiants publics non devinables.
campaignIdIntClé étrangère liée à un Campaign.id.
campaignCampaignLa relation vers la Campaign parente. onDelete: Cascade assure que si une campagne est supprimée, tous ses liens le sont aussi.
tokenStringUne chaîne courte, unique et aléatoire (nanoid(10)) utilisée comme partie publique de l'URL du sondage.
managerNameStringLe nom du manager ou de l'équipe associé à ce lien, utilisé pour segmenter les résultats.
votesVote[]Une relation un-à-plusieurs vers tous les votes soumis via ce lien spécifique.

Vote

L'unité atomique de feedback, représentant une unique soumission anonyme.

ChampTypeDescription
idIntEntier auto-incrémenté. Clé primaire.
pollLinkIdStringClé étrangère liée à un PollLink.id. Crucial pour le suivi des résultats par manager.
pollLinkPollLinkLa relation vers le PollLink utilisé. onDelete: Cascade assure l'intégrité des données.
campaignIdIntClé étrangère dénormalisée vers Campaign.id. C'est une optimisation de performance délibérée pour les requêtes d'agrégation globales, évitant une jointure supplémentaire via PollLink.
campaignCampaignLa relation directe vers la Campaign.
moodStringLa valeur du sentiment (ex: "green", "red").
commentString?Le feedback qualitatif optionnel fourni par l'utilisateur.

Schéma Logique des Relations

text
[User] 1--* [Campaign] 1--* [PollLink] 1--* [Vote]
                         ^                      |
                         |______________________|
             (Un Vote est aussi lié directement à la Campaign pour la performance)

Publié sous la licence MIT.