From 9f5c48fffccf387132245284706e7ef8a8202cce Mon Sep 17 00:00:00 2001 From: Alan Brault Date: Tue, 3 Mar 2026 07:30:20 -0500 Subject: [PATCH] refactor: optimize mappers Signed-off-by: Alan Brault --- .../demos/kotlinapi/api/dto/HealthResponse.kt | 3 ++- .../api/mappers/ComponentHealthDtoMapper.kt | 7 +++---- .../kotlinapi/api/mappers/HealthResponseMapper.kt | 15 ++++++--------- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/main/kotlin/io/visus/demos/kotlinapi/api/dto/HealthResponse.kt b/src/main/kotlin/io/visus/demos/kotlinapi/api/dto/HealthResponse.kt index bc0685b..656f3a3 100644 --- a/src/main/kotlin/io/visus/demos/kotlinapi/api/dto/HealthResponse.kt +++ b/src/main/kotlin/io/visus/demos/kotlinapi/api/dto/HealthResponse.kt @@ -1,13 +1,14 @@ package io.visus.demos.kotlinapi.api.dto import io.swagger.v3.oas.annotations.media.Schema +import java.time.Instant @Schema(description = "Health check response") data class HealthResponse( @Schema(description = "Current status of the API", example = "UP") val status: String, @Schema(description = "Timestamp of the health check", example = "2024-01-01T12:00:00Z") - val timestamp: String, + val timestamp: Instant, @Schema(description = "Status of individual components") val components: Map? = null, ) diff --git a/src/main/kotlin/io/visus/demos/kotlinapi/api/mappers/ComponentHealthDtoMapper.kt b/src/main/kotlin/io/visus/demos/kotlinapi/api/mappers/ComponentHealthDtoMapper.kt index 08bb874..6c33679 100644 --- a/src/main/kotlin/io/visus/demos/kotlinapi/api/mappers/ComponentHealthDtoMapper.kt +++ b/src/main/kotlin/io/visus/demos/kotlinapi/api/mappers/ComponentHealthDtoMapper.kt @@ -6,8 +6,7 @@ import tech.mappie.api.ObjectMappie object ComponentHealthDtoMapper : ObjectMappie() { override fun map(from: ComponentHealth): ComponentHealthDto = - ComponentHealthDto( - status = from.status.name, - message = from.message, - ) + mapping { + ComponentHealthDto::status fromProperty ComponentHealth::status transform { it.name } + } } diff --git a/src/main/kotlin/io/visus/demos/kotlinapi/api/mappers/HealthResponseMapper.kt b/src/main/kotlin/io/visus/demos/kotlinapi/api/mappers/HealthResponseMapper.kt index 125a5d3..54125f2 100644 --- a/src/main/kotlin/io/visus/demos/kotlinapi/api/mappers/HealthResponseMapper.kt +++ b/src/main/kotlin/io/visus/demos/kotlinapi/api/mappers/HealthResponseMapper.kt @@ -5,13 +5,10 @@ import io.visus.demos.kotlinapi.domain.model.HealthStatus import tech.mappie.api.ObjectMappie object HealthResponseMapper : ObjectMappie() { - override fun map(from: HealthStatus): HealthResponse = - HealthResponse( - status = from.status.name, - timestamp = from.timestamp.toString(), - components = - from.components.mapValues { (_, componentHealth) -> - ComponentHealthDtoMapper.map(componentHealth) - }, - ) + override fun map(from: HealthStatus): HealthResponse = mapping { + HealthResponse::status fromProperty HealthStatus::status transform { it.name } + HealthResponse::components fromProperty HealthStatus::components transform { + it.mapValues { (_, value) -> ComponentHealthDtoMapper.map(value) } + } + } }