remove owner field in experiment and metric entity

This commit is contained in:
akshat-sonic
2023-02-21 15:05:32 +05:30
parent 1b3623eb7c
commit 0b578346c8
15 changed files with 29 additions and 112 deletions

View File

@@ -1,22 +0,0 @@
package com.navi.medici.dto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.FieldDefaults;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LitmusOwner {
String emailId;
String name;
}

View File

@@ -1,22 +0,0 @@
package com.navi.medici.filters;
import com.navi.medici.enums.ExperimentStatus;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldDefaults;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class ExperimentSearchFilter {
String experimentOwner;
String query;
ExperimentStatus experimentStatus;
}

View File

@@ -1,6 +1,5 @@
package com.navi.medici.mapper;
import com.navi.medici.dto.LitmusOwner;
import com.navi.medici.entity.ExperimentEntity;
import com.navi.medici.dto.ExperimentImpact;
import com.navi.medici.enums.ExperimentStatus;
@@ -33,9 +32,7 @@ public class ExperimentMapper {
? ExperimentStatus.valueOf(experimentEntity.getExperimentStatus())
: null)
.impact(ExperimentImpact.builder().build())
.ownerName(StringUtils.isNotBlank(experimentEntity.getExperimentOwner())
? jacksonUtils.stringToObject(experimentEntity.getExperimentOwner(), LitmusOwner.class).getName()
: null)
.createdBy(experimentEntity.getCreatedBy())
.testUsers(experimentEntity.getTestUsers())
.primaryMetric(experimentEntity.getPrimaryMetric())
.build();

View File

@@ -1,15 +1,11 @@
package com.navi.medici.mapper;
import com.navi.medici.dto.LitmusOwner;
import com.navi.medici.entity.MetricEntity;
import com.navi.medici.enums.MetricType;
import com.navi.medici.query.experiment.IExperimentQuery;
import com.navi.medici.repository.ExperimentRepository;
import com.navi.medici.response.MetricResponse;
import com.navi.medici.util.JacksonUtils;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.experimental.UtilityClass;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
@@ -22,9 +18,7 @@ public class MetricMapper {
long numberOfExperimentsForMetrics = experimentRepository.countByPrimaryMetric(metricEntity.getMetricName());
return MetricResponse.builder()
.metricId(metricEntity.getMetricId())
.metricOwner(StringUtils.isNotBlank(metricEntity.getMetricOwner())
? jacksonUtils.stringToObject(metricEntity.getMetricOwner(), LitmusOwner.class)
: null)
.createdBy(metricEntity.getCreatedBy())
.metricName(metricEntity.getMetricName())
.metricType(StringUtils.isNotBlank(metricEntity.getMetricType())
? jacksonUtils.stringToObject(metricEntity.getMetricType(), MetricType.class)

View File

@@ -17,4 +17,5 @@ public class CreateMetricRequest {
String metricName;
String athenaQuery;
MetricType metricType;
String createdBy;
}

View File

@@ -21,7 +21,7 @@ import lombok.experimental.FieldDefaults;
public class ExperimentResponse {
String experimentId;
String experimentName;
String ownerName;
String createdBy;
String primaryMetric;
ExperimentImpact impact;
Long testUsers;

View File

@@ -1,7 +1,6 @@
package com.navi.medici.response;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.navi.medici.dto.LitmusOwner;
import com.navi.medici.enums.MetricType;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
@@ -24,7 +23,7 @@ public class MetricResponse {
String metricId;
String metricName;
MetricType metricType;
LitmusOwner metricOwner;
String createdBy;
LocalDateTime updatedAt;
Long numberOfExperiments;
}

View File

@@ -4,7 +4,6 @@ import com.navi.medici.entity.MetricEntity;
import com.navi.medici.mapper.MetricMapper;
import com.navi.medici.repository.MetricRepository;
import com.navi.medici.request.CreateMetricRequest;
import com.navi.medici.dto.LitmusOwner;
import com.navi.medici.response.MetricResponse;
import com.navi.medici.util.JacksonUtils;
import com.navi.medici.validator.MetricValidator;
@@ -31,7 +30,7 @@ public class MetricServiceImpl implements MetricService {
.metricId(UUID.randomUUID().toString())
.metricName(createMetricRequest.getMetricName())
.metricType(jacksonUtils.objectToString(createMetricRequest.getMetricType()))
.metricOwner(jacksonUtils.objectToString(LitmusOwner.builder().build()))
.createdBy(createMetricRequest.getCreatedBy())
.athenaQuery(createMetricRequest.getAthenaQuery())
.build();
return metricMapper.mapMetricEntityToMetricResponse(metricRepository.save(metric));

View File

@@ -28,7 +28,7 @@ public class ExperimentSpecification {
cb.or(
cb.like(
cb.lower(root.get("name")),
value.toLowerCase()+"%"
"%"+value.toLowerCase()+"%"
),
cb.like(
cb.lower(root.get("primaryMetric")),
@@ -50,10 +50,7 @@ public class ExperimentSpecification {
Optional.ofNullable(owner).ifPresent(value -> {
predicateList.add(
cb.equal(
cb.function("jsonb_extract_path_text",
String.class,
root.get("experimentOwner"),
cb.literal("emailId")),
root.get("createdBy"),
value
)
);

View File

@@ -2,7 +2,6 @@ package com.navi.medici.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.navi.medici.controller.v1.ExperimentController;
import com.navi.medici.dto.LitmusOwner;
import com.navi.medici.enums.ExperimentStatus;
import com.navi.medici.request.ExperimentSearchRequest;
import com.navi.medici.request.v1.LitmusExperiment;
@@ -19,7 +18,6 @@ import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
@@ -28,7 +26,6 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import static org.mockito.ArgumentMatchers.any;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

View File

@@ -1,6 +1,7 @@
package com.navi.medici.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

View File

@@ -6,33 +6,24 @@ import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Version;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.FieldDefaults;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import lombok.experimental.SuperBuilder;
@Entity
@Table(name = "experiments")
@Getter
@Setter
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class ExperimentEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
public class ExperimentEntity extends BaseEntity{
@Column(name = "experiment_id")
String experimentId;
@@ -68,23 +59,10 @@ public class ExperimentEntity {
@Column(name = "vertical")
String vertical;
@Version
private Integer version;
@Column(name = "created_at")
@CreationTimestamp
LocalDateTime createdAt;
@Column(name = "updated_at")
@UpdateTimestamp
LocalDateTime updatedAt;
String primaryMetric;
String secondaryMetric;
String experimentOwner;
Long sampleSizeRequired;
Double baselineConversion;

View File

@@ -8,6 +8,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.FieldDefaults;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.springframework.jmx.support.MetricType;
@@ -22,7 +23,7 @@ import javax.persistence.Table;
@Table(name = "metrics")
@Getter
@Setter
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
@@ -33,7 +34,5 @@ public class MetricEntity extends BaseEntity{
String metricType;
String metricOwner;
String athenaQuery;
}

View File

@@ -20,6 +20,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.FieldDefaults;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
@@ -27,14 +28,11 @@ import org.hibernate.annotations.UpdateTimestamp;
@Table(name = "segments")
@Getter
@Setter
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class SegmentEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
public class SegmentEntity extends BaseEntity{
@Column(name = "segment_id")
String segmentId;
@@ -51,15 +49,4 @@ public class SegmentEntity {
@Column(name = "segment_type")
@Enumerated(EnumType.STRING)
SegmentType segmentType;
@Version
private Integer version;
@Column(name = "created_at")
@CreationTimestamp
LocalDateTime createdAt;
@Column(name = "updated_at")
@UpdateTimestamp
LocalDateTime updatedAt;
}

View File

@@ -0,0 +1,12 @@
--liquibase formatted sql
--changeset author:akshatsonic id:202302211500
ALTER TABLE experiments
DROP COLUMN experiment_owner;
ALTER TABLE metrics
DROP COLUMN metric_owner;