-
Notifications
You must be signed in to change notification settings - Fork 598
Expand file tree
/
Copy pathBeerController.java
More file actions
87 lines (63 loc) · 2.88 KB
/
Copy pathBeerController.java
File metadata and controls
87 lines (63 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package guru.springframework.spring6restmvc.controller;
import guru.springframework.spring6restmvc.model.BeerDTO;
import guru.springframework.spring6restmvc.model.BeerStyle;
import guru.springframework.spring6restmvc.services.BeerService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.UUID;
/**
* Created by jt, Spring Framework Guru.
*/
@Slf4j
@RequiredArgsConstructor
@RestController
public class BeerController {
public static final String BEER_PATH = "/api/v1/beer";
public static final String BEER_PATH_ID = BEER_PATH + "/{beerId}";
private final BeerService beerService;
@PatchMapping(BEER_PATH_ID)
public ResponseEntity updateBeerPatchById(@PathVariable("beerId")UUID beerId, @RequestBody BeerDTO beer){
beerService.patchBeerById(beerId, beer);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
@DeleteMapping(BEER_PATH_ID)
public ResponseEntity deleteById(@PathVariable("beerId") UUID beerId){
if(! beerService.deleteById(beerId)){
throw new NotFoundException();
}
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
@PutMapping(BEER_PATH_ID)
public ResponseEntity updateById(@PathVariable("beerId")UUID beerId, @Validated @RequestBody BeerDTO beer){
if( beerService.updateBeerById(beerId, beer).isEmpty()){
throw new NotFoundException();
}
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
@PostMapping(BEER_PATH)
public ResponseEntity handlePost(@Validated @RequestBody BeerDTO beer){
BeerDTO savedBeer = beerService.saveNewBeer(beer);
HttpHeaders headers = new HttpHeaders();
headers.add("Location", BEER_PATH + "/" + savedBeer.getId().toString());
return new ResponseEntity(headers, HttpStatus.CREATED);
}
@GetMapping(value = BEER_PATH)
public Page<BeerDTO> listBeers(@RequestParam(required = false) String beerName,
@RequestParam(required = false) BeerStyle beerStyle,
@RequestParam(required = false) Boolean showInventory,
@RequestParam(required = false) Integer pageNumber,
@RequestParam(required = false) Integer pageSize){
return beerService.listBeers(beerName, beerStyle, showInventory, pageNumber, pageSize);
}
@GetMapping(value = BEER_PATH_ID)
public BeerDTO getBeerById(@PathVariable("beerId") UUID beerId){
log.debug("Get Beer by Id - in controller");
return beerService.getBeerById(beerId).orElseThrow(NotFoundException::new);
}
}