TargetingVersionMapper.java
package io.featureprobe.api.mapper;
import io.featureprobe.api.base.model.TargetingContent;
import io.featureprobe.api.dto.MetricIterationResponse;
import io.featureprobe.api.dto.TargetingVersionResponse;
import io.featureprobe.api.dao.entity.TargetingVersion;
import io.featureprobe.api.base.util.JsonMapper;
import org.apache.commons.lang3.StringUtils;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
@Mapper
public interface TargetingVersionMapper extends BaseMapper {
TargetingVersionMapper INSTANCE = Mappers.getMapper(TargetingVersionMapper.class);
@Mapping(target = "content",
expression = "java(toTargetingContent(targetingVersion.getContent()))")
@Mapping(target = "createdBy", expression = "java(getAccount(targetingVersion.getCreatedBy()))")
TargetingVersionResponse entityToResponse(TargetingVersion targetingVersion);
@Mapping(target = "publishTime", source = "createdTime")
@Mapping(target = "version", source = "version")
@Mapping(target = "releaseNote", source = "comment")
MetricIterationResponse.PublishRecord entityToPublishRecord(TargetingVersion targetingVersion);
default TargetingContent toTargetingContent(String content) {
if (StringUtils.isNotBlank(content)) {
return JsonMapper.toObject(content, TargetingContent.class);
}
return null;
}
}