OptionController.java
package mirante.api.exercise.option;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.*;
import org.springframework.http.HttpStatus;
import org.springframework.web.server.ResponseStatusException;
@CrossOrigin
@RestController
class OptionController {
private final OptionRepository repository;
OptionController(OptionRepository repository) {
this.repository = repository;
}
@GetMapping("/option")
List<OptionDTO> all() {
List<Option> options = repository.findAll();
List<OptionDTO> optionDTOs = new ArrayList<>();
options.forEach(e -> {
OptionDTO dto = new OptionDTO();
dto.place = e.getPlace();
dto.content = e.getContent();
dto.correct = e.getCorrect();
dto.exercise = e.getExerciseId();
optionDTOs.add(dto);
});
return optionDTOs;
}
@PostMapping("/option")
@ResponseStatus(HttpStatus.CREATED)
Option newOption(@RequestBody Option newOption) {
return repository.save(newOption);
}
@GetMapping("/option/{id}")
Option one(@PathVariable String id) {
return repository.findById(id)
.orElseThrow(() -> new ResponseStatusException(
HttpStatus.NOT_FOUND, "Option with id ${id} not found")
);
}
@DeleteMapping("/option/{id}")
void deleteOption(@PathVariable String id) {
repository.deleteById(id);
}
}