package dev.lions.unionflow.server.entity; import jakarta.persistence.*; import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; /** * Entité ConfigurationWave pour la configuration de l'intégration Wave * * @author UnionFlow Team * @version 3.0 * @since 2025-01-29 */ @Entity @Table( name = "configurations_wave", indexes = { @Index(name = "idx_config_wave_cle", columnList = "cle", unique = true) }) @Data @NoArgsConstructor @AllArgsConstructor @Builder @EqualsAndHashCode(callSuper = true) public class ConfigurationWave extends BaseEntity { /** Clé de configuration */ @NotBlank @Column(name = "cle", unique = true, nullable = false, length = 100) private String cle; /** Valeur de configuration (peut être encryptée) */ @Column(name = "valeur", columnDefinition = "TEXT") private String valeur; /** Description de la configuration */ @Column(name = "description", length = 500) private String description; /** Type de valeur (STRING, NUMBER, BOOLEAN, JSON, ENCRYPTED) */ @Column(name = "type_valeur", length = 20) private String typeValeur; /** Environnement (SANDBOX, PRODUCTION, COMMON) */ @Column(name = "environnement", length = 20) private String environnement; /** Méthode métier pour vérifier si la valeur est encryptée */ public boolean isEncryptee() { return "ENCRYPTED".equals(typeValeur); } /** Callback JPA avant la persistance */ @PrePersist protected void onCreate() { super.onCreate(); if (typeValeur == null || typeValeur.isEmpty()) { typeValeur = "STRING"; } if (environnement == null || environnement.isEmpty()) { environnement = "COMMON"; } } }