기존 만든 Item API에 제약조건들을 추가하였다.
1.Create
레포지토리에 existsByName 메소드를 정의하고 서비스에서 동일 이름 아이템을 생성하지 못하게 만들었다.
@Valid로 매개변수가 유효한지 검사한다. (모델에 정의한 어노테이션들에 대하여)
public interface ItemRepository extends JpaRepository<Item, Long> {
boolean existsByName(String name);
}
@PostMapping("/create")
public Item createItem(@Valid @RequestBody ItemDTO itemdto){
return itemService.createItem(itemdto);
}
public Item createItem(ItemDTO itemdto){
if (itemRepository.existsByName(itemdto.getName())) {
throw new IllegalArgumentException("Item with this name already exists");
}
Item item = Item.builder()
.imgurl(itemdto.getImgurl())
.name(itemdto.getName())
.description(itemdto.getDescription())
.build();
return itemRepository.save(item);
}
2.READ
서비스에서 id가 0이하인지 검사하고 해당 id의 아이템이 있는지 검사한다.
@GetMapping("/{id}")
public Item getItemById(@PathVariable("id") Long id){
return itemService.getItemById(id);
}
public Item getItemById(Long id){
if (id <= 0) {
throw new IllegalArgumentException("ID must be greater than 0");
}
return itemRepository.findById(id)
.orElseThrow(() -> new NoSuchElementException());
}
3.UPDATE
id의 아이템이 있는지 검사한다.
@PutMapping("/modify/{id}")
public Item modifyItem(@PathVariable("id") Long id, @RequestBody Item item){
return itemService.modifyItem(id, item);
}
public Item modifyItem(Long id, Item item) {
if (itemRepository.existsById(id)) {
item.setId(id);
return itemRepository.save(item);
}
throw new NoSuchElementException("Item not found with id " + id);
}
4.DELETE
id의 아이템이 있는지 검사한다.
@DeleteMapping("/{id}")
public boolean delteItem(@PathVariable("id") Long id){
return itemService.deleteItem(id);
}
public boolean deleteItem(Long id){
if (itemRepository.existsById(id)) {
itemRepository.deleteById(id);
return true;
}
return false;
}
'BackEnd > SpringBoot' 카테고리의 다른 글
[SpringBoot] Test로 데이터 추가하기 경매장#7 (0) | 2024.11.05 |
---|---|
[SpringBoot] RESTAPI CRUD 구현법 경매장#5 (0) | 2024.11.03 |
[SpringBoot] 경매장 REST API로 변경, Auction API#4 (0) | 2024.10.27 |