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..1bb9e0783 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 @@ -1,16 +1,18 @@ package com.codedifferently.lesson26.web; -import com.codedifferently.lesson26.library.Librarian; -import com.codedifferently.lesson26.library.Library; -import com.codedifferently.lesson26.library.MediaItem; -import com.codedifferently.lesson26.library.search.SearchCriteria; import java.io.IOException; import java.util.List; import java.util.Set; + import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; +import com.codedifferently.lesson26.library.Librarian; +import com.codedifferently.lesson26.library.Library; +import com.codedifferently.lesson26.library.MediaItem; +import com.codedifferently.lesson26.library.search.SearchCriteria; + @RestController @CrossOrigin public class MediaItemsController { @@ -29,4 +31,29 @@ public GetMediaItemsResponse getItems() { var response = GetMediaItemsResponse.builder().items(responseItems).build(); return response; } + @PostMapping("/items") + public CreateMediaItemResponse createItem(@RequestBody CreateMediaItemRequest request) { + if (request == null || request.getItem() == null) { + throw new IllegalArgumentException("Invalid request body"); + } + MediaItem newItem = request.toMediaItem(); + library.addItem(newItem); + return new CreateMediaItemResponse(newItem); + } + @GetMapping("/items/{id}") + public MediaItemResponse getItemById(@PathVariable String id) { + MediaItem item = library.getItemById(id); + if (item == null) { + throw new MediaItemNotFoundException("Media item not found"); + } + return MediaItemResponse.from(item); + } + @DeleteMapping("/items/{id}") + public ResponseEntity deleteItem(@PathVariable String id) { + boolean deleted = library.deleteItem(id); + if (!deleted) { + throw new MediaItemNotFoundException("Item not found"); + } + return ResponseEntity.noContent().build(); + } }