45 lines
1.6 KiB
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();
|
|
}
|
|
}
|