control-center-management/src/main/java/inc/sdt/controlcentermanagement/presentation/StatsController.java

63 lines
2.4 KiB
Java
Raw Normal View History

2023-09-08 06:17:16 +00:00
package inc.sdt.controlcentermanagement.presentation;
import inc.sdt.controlcentermanagement.application.StatsService;
2023-09-11 00:57:09 +00:00
import inc.sdt.controlcentermanagement.infrastructure.amqp.ResourceMapping;
2023-09-11 00:40:43 +00:00
import inc.sdt.controlcentermanagement.presentation.support.CustomPageable;
import inc.sdt.controlcentermanagement.presentation.support.CustomPageableImpl;
import inc.sdt.controlcentermanagement.presentation.support.PageableResponse;
2023-09-08 06:17:16 +00:00
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
2023-09-11 00:40:43 +00:00
import org.springframework.data.domain.Page;
2023-09-08 06:17:16 +00:00
import org.springframework.http.HttpStatus;
2023-09-11 00:40:43 +00:00
import org.springframework.web.bind.annotation.*;
import java.util.List;
2023-09-08 06:17:16 +00:00
@RestController
public class StatsController {
private final Logger log = LoggerFactory.getLogger(StatsController.class);
private final StatsService statsService;
public StatsController(StatsService statsService) {
this.statsService = statsService;
}
2023-09-11 00:57:09 +00:00
@ResourceMapping(name = "Chambers_stats", method = "GET", uri = "/chambers/stats", description = "get chamber stats")
2023-09-08 06:17:16 +00:00
@ResponseStatus(HttpStatus.OK)
2023-09-11 00:44:38 +00:00
@GetMapping("/chambers/stats")
2023-09-11 00:40:43 +00:00
public StatsResult chambers(
2023-09-08 06:17:16 +00:00
// @RequestHeader("Authorization") String authorization
){
2023-09-11 00:40:43 +00:00
log.info("[chambers stats]");
2023-09-08 06:17:16 +00:00
2023-09-11 00:40:43 +00:00
List<StatsRecord> chamberStats = statsService.getChamberStats();
2023-09-08 06:17:16 +00:00
2023-09-11 00:40:43 +00:00
return new StatsResult(chamberStats);
}
2023-09-08 06:17:16 +00:00
2023-09-11 00:57:09 +00:00
@ResourceMapping(name = "Chambers_stats_detail", method = "GET", uri = "/chambers/stats/{chamberNumber}", description = "get chamber stats detail")
2023-09-11 00:40:43 +00:00
@ResponseStatus(HttpStatus.OK)
2023-09-11 00:44:38 +00:00
@GetMapping("/chambers/stats/{chamberNumber}")
2023-09-11 00:40:43 +00:00
public PageableResponse<StatsDetailRecord> detail(
// @RequestHeader("Authorization") String authorization
@PathVariable String chamberNumber,
@RequestParam(value = "page", required = false, defaultValue = "0") Integer page,
@RequestParam(value = "size", required = false, defaultValue = "20") Integer size
){
log.info("[chambers stats]");
Page<StatsDetailRecord> chamberStatsDetail = statsService.getChamberStatsDetail(Integer.max(0, page), (page >= 0 ? size : Integer.MAX_VALUE), chamberNumber);
2023-09-08 06:17:16 +00:00
2023-09-11 00:40:43 +00:00
if(chamberStatsDetail.hasContent()){
return PageableResponse.from(chamberStatsDetail, this::from);
}
2023-09-08 06:17:16 +00:00
2023-09-11 00:40:43 +00:00
return null;
}
2023-09-08 06:17:16 +00:00
2023-09-11 00:40:43 +00:00
private StatsDetailRecord from(StatsDetailRecord statsDetailRecord){
return statsDetailRecord;
}
2023-09-08 06:17:16 +00:00
}