TP-26660 | optional primary metric (#66)

This commit is contained in:
Akshat Soni
2023-05-04 00:25:03 +05:30
committed by GitHub Enterprise
parent 2fc1c5f158
commit 065aec2ad0
2 changed files with 26 additions and 7 deletions

View File

@@ -19,6 +19,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
@@ -69,7 +70,9 @@ public class ExperimentMapper {
.experimentName(experimentEntity.getName())
.description(experimentEntity.getDescription())
.strategies(Objects.nonNull(experimentEntity.getStrategies())
? jacksonUtils.stringToListObject(experimentEntity.getStrategies(), ActivationStrategy.class)
? addRolloutToSegmentsWithNoRollouts(
jacksonUtils.stringToListObject(experimentEntity.getStrategies(), ActivationStrategy.class)
)
: null)
.variants(Objects.nonNull(experimentEntity.getVariants())
? jacksonUtils.stringToListObject(experimentEntity.getVariants(), VariantDefinition.class)
@@ -84,6 +87,20 @@ public class ExperimentMapper {
.build();
}
private List<ActivationStrategy> addRolloutToSegmentsWithNoRollouts(List<ActivationStrategy> strategies) {
return strategies.stream()
.map(strategy -> {
Map<String, String> parameters = strategy.getParameters();
if (parameters.containsKey("segment") && !parameters.containsKey("rollout")) {
parameters.put("rollout", "100");
}
strategy.setParameters(parameters);
return strategy;
})
.toList();
}
public ExperimentInfoDTO mapExperimentInfoEntityToExperimentInfoDTO(ExperimentInfoEntity experimentInfo) {
if (Objects.isNull(experimentInfo)) {
return null;

View File

@@ -142,12 +142,14 @@ public class ExperimentServiceImpl implements ExperimentService {
.team(team.orElse(null))
.build();
experimentInfoQuery.save(experimentInfo);
ExperimentMetricMappingEntity primaryMetricMapping = ExperimentMetricMappingEntity.builder()
.experiment(experiment)
.metric(primaryMetric.get())
.experimentMetricType(ExperimentMetricType.PRIMARY)
.build();
experimentMetricMappingQuery.save(primaryMetricMapping);
if (primaryMetric.isPresent()) {
ExperimentMetricMappingEntity primaryMetricMapping = ExperimentMetricMappingEntity.builder()
.experiment(experiment)
.metric(primaryMetric.get())
.experimentMetricType(ExperimentMetricType.PRIMARY)
.build();
experimentMetricMappingQuery.save(primaryMetricMapping);
}
if (secondaryMetric.isPresent()) {
ExperimentMetricMappingEntity secondaryMetricMapping = ExperimentMetricMappingEntity.builder()
.experiment(experiment)