57 lines
2.1 KiB
Java
57 lines
2.1 KiB
Java
package com.example.demo.api;
|
|
|
|
import com.example.demo.application.RuleManagementService;
|
|
import com.example.demo.domain.CurrentRulesResponse;
|
|
import com.example.demo.domain.SaveRuleRequest;
|
|
import com.example.demo.domain.SaveRuleResponse;
|
|
import com.example.demo.domain.RestoreRuleVersionRequest;
|
|
import com.example.demo.domain.RuleVersionSummaryResponse;
|
|
import jakarta.validation.Valid;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.PutMapping;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.List;
|
|
|
|
@RestController
|
|
@RequestMapping("/api/v1/admin/rules")
|
|
public class RuleAdminController {
|
|
|
|
private final RuleManagementService ruleManagementService;
|
|
|
|
public RuleAdminController(RuleManagementService ruleManagementService) {
|
|
this.ruleManagementService = ruleManagementService;
|
|
}
|
|
|
|
@GetMapping
|
|
public ResponseEntity<CurrentRulesResponse> getCurrent() {
|
|
return ResponseEntity.ok(ruleManagementService.getCurrentRules());
|
|
}
|
|
|
|
@GetMapping("/versions")
|
|
public ResponseEntity<List<RuleVersionSummaryResponse>> getVersions(
|
|
@RequestParam(defaultValue = "20") int limit
|
|
) {
|
|
return ResponseEntity.ok(ruleManagementService.getRuleVersions(limit));
|
|
}
|
|
|
|
@PutMapping
|
|
public ResponseEntity<SaveRuleResponse> saveAndActivate(@Valid @RequestBody SaveRuleRequest request) {
|
|
return ResponseEntity.ok(ruleManagementService.saveAndActivate(request));
|
|
}
|
|
|
|
@PostMapping("/versions/{version}/restore")
|
|
public ResponseEntity<SaveRuleResponse> restore(
|
|
@PathVariable long version,
|
|
@Valid @RequestBody RestoreRuleVersionRequest request
|
|
) {
|
|
return ResponseEntity.ok(ruleManagementService.restoreVersion(version, request));
|
|
}
|
|
|
|
}
|