RailSignalAPI/src/main/java/nl/andrewl/railsignalapi/rest/SignalsApiController.java

45 lines
1.6 KiB
Java

package nl.andrewl.railsignalapi.rest;
import lombok.RequiredArgsConstructor;
import nl.andrewl.railsignalapi.rest.dto.SignalConnectionsUpdatePayload;
import nl.andrewl.railsignalapi.rest.dto.SignalCreationPayload;
import nl.andrewl.railsignalapi.rest.dto.SignalResponse;
import nl.andrewl.railsignalapi.service.SignalService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(path = "/api/railSystems/{rsId}/signals")
@RequiredArgsConstructor
public class SignalsApiController {
private final SignalService signalService;
@PostMapping
public SignalResponse createSignal(@PathVariable long rsId, @RequestBody SignalCreationPayload payload) {
return signalService.createSignal(rsId, payload);
}
@GetMapping
public List<SignalResponse> getSignals(@PathVariable long rsId) {
return signalService.getAllSignals(rsId);
}
@GetMapping(path = "/{sigId}")
public SignalResponse getSignal(@PathVariable long rsId, @PathVariable long sigId) {
return signalService.getSignal(rsId, sigId);
}
@PostMapping(path = "/{sigId}/signalConnections")
public SignalResponse updateSignalConnections(@PathVariable long rsId, @PathVariable long sigId, @RequestBody SignalConnectionsUpdatePayload payload) {
return signalService.updateSignalBranchConnections(rsId, sigId, payload);
}
@DeleteMapping(path = "/{sigId}")
public ResponseEntity<?> deleteSignal(@PathVariable long rsId, @PathVariable long sigId) {
signalService.deleteSignal(rsId, sigId);
return ResponseEntity.noContent().build();
}
}