diff --git a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java index a393a53b9..382ee4f4d 100644 --- a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java +++ b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java @@ -7,9 +7,14 @@ import java.io.IOException; import java.util.List; import java.util.Set; +import java.util.UUID; import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; @RestController @CrossOrigin @@ -29,4 +34,31 @@ public GetMediaItemsResponse getItems() { var response = GetMediaItemsResponse.builder().items(responseItems).build(); return response; } + + @PostMapping("/items") + public MediaItemResponse addItemById(@RequestBody CreateMediaItemRequest createRequest) { + if (createRequest.getItem().getId() == null) { + createRequest.getItem().setId(UUID.randomUUID()); + } + + library.add(createRequest.getItem()); + + return MediaItemResponse.from(createRequest.getItem()); + } + + @GetMapping("/items/:{id}") + public MediaItemResponse getItemById(@PathVariable("id") UUID id) { + MediaItem item = library.search(SearchCriteria.builder().id(id.toString()).build()).stream().findFirst().orElseThrow(); + + return MediaItemResponse.from(item); + } + + @DeleteMapping("/items/:{id}") + public MediaItemResponse deleteItemById(@PathVariable("id") UUID id) { + MediaItem itemToDelete = library.search(SearchCriteria.builder().id(id.toString()).build()).stream().findFirst().orElseThrow(); + Librarian librarian = library.getLibrarians().stream().findFirst().orElseThrow(); + library.removeMediaItem(itemToDelete, librarian); + + return MediaItemResponse.from(itemToDelete); + } }