Untitled

 avatar
unknown
plain_text
2 months ago
1.3 kB
5
Indexable
@RestController
@RequestMapping("/api/v1/destinations")
public class DestinationController {

    private final DestinationService service;

    public DestinationController(DestinationService service) {
        this.service = service;
    }

    @GetMapping
    @PreAuthorize("hasAnyRole('ADMIN', 'USER')")
    public ResponseEntity<List<DestinationResponseDto>> list() {
        return ResponseEntity.ok(service.findAll());
    }

    @PostMapping
    @PreAuthorize("hasRole('ADMIN')")
    public ResponseEntity<DestinationResponseDto> create(@Valid @RequestBody DestinationRequestDto request) {
        var created = service.create(request);
        var location = URI.create("/api/v1/destinations" + created.id());
        return ResponseEntity.created(location).body(created);
    }

    @PutMapping("/{id}")
    @PreAuthorize("hasRole('ADMIN')")
    public ResponseEntity<DestinationResponseDto> update(
            @PathVariable Long id,
            @Valid @RequestBody UpdateDestinationRequestDto request) {

        return ResponseEntity.ok(service.update(id, request));
    }

    @DeleteMapping("/{id}")
    @PreAuthorize("hasRole('ADMIN')")
    public ResponseEntity<Void> delete(@PathVariable Long id) {
        service.delete(id);
        return ResponseEntity.noContent().build();
    }
}
Editor is loading...
Leave a Comment