package dev.lions.unionflow.server.entity; import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; import lombok.*; import java.util.UUID; /** * Lien « suivi » entre deux membres : le membre connecté (follower) suit un autre membre (suivi). * Utilisé pour la fonctionnalité Réseau / Suivre dans l’app mobile. */ @Entity @Table( name = "membre_suivi", uniqueConstraints = @UniqueConstraint(columnNames = { "follower_utilisateur_id", "suivi_utilisateur_id" }), indexes = { @Index(name = "idx_membre_suivi_follower", columnList = "follower_utilisateur_id"), @Index(name = "idx_membre_suivi_suivi", columnList = "suivi_utilisateur_id") } ) @Data @NoArgsConstructor @AllArgsConstructor @Builder @EqualsAndHashCode(callSuper = true) public class MembreSuivi extends BaseEntity { /** Utilisateur qui suit (membre connecté). */ @NotNull @Column(name = "follower_utilisateur_id", nullable = false) private UUID followerUtilisateurId; /** Utilisateur suivi (membre cible). */ @NotNull @Column(name = "suivi_utilisateur_id", nullable = false) private UUID suiviUtilisateurId; }