Files
live-call-asr-monitor/src/main/java/com/example/demo/api/RuleAdminController.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));
}
}