EnvironmentMapper.java
package io.featureprobe.api.mapper;
import io.featureprobe.api.dto.ApprovalSettings;
import io.featureprobe.api.dto.ApprovalSettingsResponse;
import io.featureprobe.api.dto.EnvironmentCreateRequest;
import io.featureprobe.api.dto.EnvironmentResponse;
import io.featureprobe.api.dto.EnvironmentUpdateRequest;
import io.featureprobe.api.dao.entity.Environment;
import io.featureprobe.api.base.util.JsonMapper;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper
public interface EnvironmentMapper {
EnvironmentMapper INSTANCE = Mappers.getMapper(EnvironmentMapper.class);
EnvironmentResponse entityToResponse(Environment environment);
Environment requestToEntity(EnvironmentCreateRequest createRequest);
@Mapping(target = "environmentKey", source = "key")
@Mapping(target = "environmentName", source = "name")
@Mapping(target = "enable", source = "enableApproval")
@Mapping(target = "reviewers", expression = "java(toReviewerList(environment.getReviewers()))")
ApprovalSettingsResponse entityToApprovalSettingsResponse(Environment environment);
@BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
void mapEntity(EnvironmentUpdateRequest updateRequest, @MappingTarget Environment environment);
@BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
@Mapping(target = "enableApproval", source = "enable")
@Mapping(target = "reviewers", expression = "java(toReviewers(approvalSettings.getReviewers()))")
void mapEntity(ApprovalSettings approvalSettings, @MappingTarget Environment environment);
default List<String> toReviewerList(String reviewers) {
return JsonMapper.toListObject(reviewers, String.class);
}
default String toReviewers(List<String> reviewers) {
return JsonMapper.toJSONString(reviewers);
}
}