diff --git a/src/main/java/dev/lions/user/manager/dto/sync/HealthStatusDTO.java b/src/main/java/dev/lions/user/manager/dto/sync/HealthStatusDTO.java new file mode 100644 index 0000000..cb996c6 --- /dev/null +++ b/src/main/java/dev/lions/user/manager/dto/sync/HealthStatusDTO.java @@ -0,0 +1,46 @@ +package dev.lions.user.manager.dto.sync; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.eclipse.microprofile.openapi.annotations.media.Schema; + +import java.io.Serializable; + +/** + * DTO représentant le statut de santé de Keycloak + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) +@Schema(description = "Statut de santé de Keycloak") +public class HealthStatusDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "Timestamp du check de santé (millisecondes)", example = "1699545600000") + private long timestamp; + + @Schema(description = "Indique si Keycloak est accessible", example = "true") + private boolean keycloakAccessible; + + @Schema(description = "Version de Keycloak", example = "23.0.3") + private String keycloakVersion; + + @Schema(description = "Indique si les realms sont accessibles", example = "true") + private boolean realmsAccessible; + + @Schema(description = "Nombre de realms disponibles", example = "5") + private int realmsCount; + + @Schema(description = "Indique si Keycloak est globalement en bonne santé", example = "true") + private boolean overallHealthy; + + @Schema(description = "Message d'erreur si le check a échoué") + private String errorMessage; +} + diff --git a/src/main/java/dev/lions/user/manager/dto/sync/SyncResultDTO.java b/src/main/java/dev/lions/user/manager/dto/sync/SyncResultDTO.java new file mode 100644 index 0000000..d05c687 --- /dev/null +++ b/src/main/java/dev/lions/user/manager/dto/sync/SyncResultDTO.java @@ -0,0 +1,57 @@ +package dev.lions.user.manager.dto.sync; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.eclipse.microprofile.openapi.annotations.media.Schema; + +import java.io.Serializable; + +/** + * DTO représentant le résultat d'une synchronisation + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) +@Schema(description = "Résultat d'une synchronisation avec Keycloak") +public class SyncResultDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "Nom du realm synchronisé", example = "lions") + private String realmName; + + @Schema(description = "Nombre d'utilisateurs synchronisés", example = "150") + private int usersCount; + + @Schema(description = "Nombre de rôles realm synchronisés", example = "25") + private int realmRolesCount; + + @Schema(description = "Nombre de rôles client synchronisés", example = "50") + private int clientRolesCount; + + @Schema(description = "Indique si la synchronisation a réussi", example = "true") + private boolean success; + + @Schema(description = "Message d'erreur si la synchronisation a échoué") + private String errorMessage; + + @Schema(description = "Timestamp de début de la synchronisation (millisecondes)", example = "1699545600000") + private long startTime; + + @Schema(description = "Timestamp de fin de la synchronisation (millisecondes)", example = "1699545615000") + private long endTime; + + /** + * Retourne la durée de la synchronisation en millisecondes + * @return durée en ms + */ + public long getDurationMs() { + return endTime - startTime; + } +} +