Skip to content

Commit bf883a4

Browse files
author
jianggang
authored
Feat: Add targeting version history (#18)
Feat: Add targeting version history
1 parent 2d11cee commit bf883a4

18 files changed

Lines changed: 233 additions & 52 deletions

src/main/java/com/featureprobe/api/controller/EnvironmentController.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ public EnvironmentResponse update(@PathVariable("projectKey") String projectKey,
5252
return environmentService.update(projectKey, environmentKey, updateRequest);
5353
}
5454

55+
@GetMapping("/{environmentKey}")
56+
@GetApiResponse
57+
@Operation(summary = "Query environment", description = "Query a environment.")
58+
public EnvironmentResponse query(@PathVariable("projectKey") String projectKey,
59+
@PathVariable("environmentKey") String environmentKey) {
60+
return environmentService.query(projectKey, environmentKey);
61+
}
62+
5563
@GetMapping("/exists")
5664
@GetApiResponse
5765
@Operation(summary = "Check environment exist", description = "Check environment exist")
@@ -62,6 +70,4 @@ public BaseResponse exists(@PathVariable("projectKey") String projectKey,
6270
return new BaseResponse(ResponseCodeEnum.SUCCESS);
6371
}
6472

65-
66-
6773
}

src/main/java/com/featureprobe/api/controller/MetricController.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.featureprobe.api.base.doc.GetApiResponse;
77
import com.featureprobe.api.base.doc.ProjectKeyParameter;
88
import com.featureprobe.api.base.doc.ToggleKeyParameter;
9+
import com.featureprobe.api.dto.AccessStatusResponse;
910
import com.featureprobe.api.dto.MetricResponse;
1011
import com.featureprobe.api.service.MetricService;
1112
import com.featureprobe.api.validate.ResourceExistsValidate;
@@ -22,7 +23,7 @@
2223
@Slf4j
2324
@AllArgsConstructor
2425
@RestController
25-
@RequestMapping("/projects/{projectKey}/environments/{environmentKey}/toggles/{toggleKey}/metrics")
26+
@RequestMapping("/projects/{projectKey}/environments/{environmentKey}/toggles/{toggleKey}")
2627
@DefaultApiResponses
2728
@ProjectKeyParameter
2829
@ToggleKeyParameter
@@ -34,7 +35,7 @@ public class MetricController {
3435
private MetricService metricService;
3536

3637
@GetApiResponse
37-
@GetMapping
38+
@GetMapping("/metrics")
3839
@Operation(summary = "Query Metrics", description = "")
3940
public MetricResponse query(@PathVariable("projectKey") String projectKey,
4041
@PathVariable("environmentKey") String environmentKey,
@@ -44,4 +45,14 @@ public MetricResponse query(@PathVariable("projectKey") String projectKey,
4445

4546
return metricService.query(projectKey, environmentKey, toggleKey, metricType, lastHours);
4647
}
48+
49+
@GetApiResponse
50+
@GetMapping("/access")
51+
@Operation(summary = "Query access status", description = "")
52+
public AccessStatusResponse query(@PathVariable("projectKey") String projectKey,
53+
@PathVariable("environmentKey") String environmentKey,
54+
@PathVariable("toggleKey") String toggleKey) {
55+
return metricService.isAccess(projectKey, environmentKey, toggleKey);
56+
}
57+
4758
}

src/main/java/com/featureprobe/api/controller/TargetingController.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.featureprobe.api.base.doc.PatchApiResponse;
77
import com.featureprobe.api.base.doc.ProjectKeyParameter;
88
import com.featureprobe.api.base.doc.ToggleKeyParameter;
9+
import com.featureprobe.api.dto.AfterTargetingVersionResponse;
910
import com.featureprobe.api.dto.TargetingRequest;
1011
import com.featureprobe.api.dto.TargetingResponse;
1112
import com.featureprobe.api.dto.TargetingVersionRequest;
@@ -67,7 +68,19 @@ public TargetingResponse query(
6768
public Page<TargetingVersionResponse> versions(
6869
@PathVariable("projectKey") String projectKey,
6970
@PathVariable("environmentKey") String environmentKey,
71+
@PathVariable("toggleKey") String toggleKey,
7072
TargetingVersionRequest targetingVersionRequest) {
71-
return targetingService.queryVersions(projectKey, environmentKey, targetingVersionRequest);
73+
return targetingService.queryVersions(projectKey, environmentKey, toggleKey, targetingVersionRequest);
74+
}
75+
76+
@GetApiResponse
77+
@GetMapping("/versions/{version}")
78+
@Operation(summary = "Get all targeting versions larger than the version。",
79+
description = "Get all targeting versions larger than the version.")
80+
public AfterTargetingVersionResponse allAfterVersions(@PathVariable("projectKey") String projectKey,
81+
@PathVariable("environmentKey") String environmentKey,
82+
@PathVariable("toggleKey") String toggleKey,
83+
@PathVariable("version") Long version) {
84+
return targetingService.queryAfterVersion(projectKey, environmentKey, toggleKey, version);
7285
}
7386
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.featureprobe.api.dto;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
6+
@AllArgsConstructor
7+
@Data
8+
public class AccessStatusResponse {
9+
10+
private Boolean isAccess;
11+
12+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.featureprobe.api.dto;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
import lombok.NoArgsConstructor;
6+
7+
import java.util.List;
8+
9+
@Data
10+
@AllArgsConstructor
11+
@NoArgsConstructor
12+
public class AfterTargetingVersionResponse {
13+
14+
private Long total;
15+
16+
private List<TargetingVersionResponse> versions;
17+
}

src/main/java/com/featureprobe/api/dto/MetricResponse.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
@AllArgsConstructor
1212
public class MetricResponse {
1313

14+
private Boolean isAccess;
1415
private List<AccessEventPoint> metrics;
1516
private List<VariationAccessCounter> summary;
1617

src/main/java/com/featureprobe/api/dto/TargetingResponse.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public class TargetingResponse {
1212

1313
private TargetingContent content;
1414

15+
private Long version;
16+
1517
private Date modifiedTime;
1618

1719
private String modifiedBy;

src/main/java/com/featureprobe/api/dto/TargetingVersionResponse.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,14 @@ public class TargetingVersionResponse {
1212

1313
private String environmentKey;
1414

15+
private String toggleKey;
16+
1517
private String comment;
1618

1719
private TargetingContent content;
1820

21+
private Boolean disabled;
22+
1923
private Long version;
2024

2125
private Date createdTime;

src/main/java/com/featureprobe/api/entity/TargetingVersion.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,21 @@
2626
@ToString(callSuper = true)
2727
public class TargetingVersion extends AbstractAuditEntity {
2828

29-
@Column(name = "targeting_id")
30-
private Long targetingId;
31-
3229
@Column(name = "project_key")
3330
private String projectKey;
3431

3532
@Column(name = "environment_key")
3633
private String environmentKey;
3734

35+
@Column(name = "toggle_key")
36+
private String toggleKey;
37+
3838
private String comment;
3939

4040
private String content;
4141

42+
private Boolean disabled;
43+
4244
private Long version;
4345

4446
}

src/main/java/com/featureprobe/api/repository/EventRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ List<Event> findBySdkKeyAndToggleKeyAndStartDateGreaterThanEqualAndEndDateLessTh
1616
Date startDate,
1717
Date endDate);
1818

19+
boolean existsBySdkKeyAndToggleKey(String sdkKey, String toggleKey);
20+
1921
}

0 commit comments

Comments
 (0)