SegmentVersionMapper.java

package io.featureprobe.api.mapper;

import io.featureprobe.api.base.model.SegmentRuleModel;
import io.featureprobe.api.base.util.JsonMapper;
import io.featureprobe.api.dao.entity.SegmentVersion;
import io.featureprobe.api.dto.SegmentVersionResponse;
import org.apache.commons.lang3.StringUtils;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

import java.util.Collections;
import java.util.List;

@Mapper
public interface SegmentVersionMapper extends BaseMapper {

    SegmentVersionMapper INSTANCE = Mappers.getMapper(SegmentVersionMapper.class);

    @Mapping(target = "rules", expression = "java(toSegmentRules(segmentVersion.getRules()))")
    SegmentVersionResponse entityToResponse(SegmentVersion segmentVersion);

    default List<SegmentRuleModel> toSegmentRules(String rules) {
        if (StringUtils.isNotBlank(rules)) {
            return JsonMapper.toObject(rules, List.class);
        }
        return toDefaultSegmentRules();
    }

    default List<SegmentRuleModel> toDefaultSegmentRules() {
        return Collections.emptyList();
    }

}