Skip to content

Commit b1b236e

Browse files
committed
feat:Lesson 26 Get/Post/Delete Methods added/AngelicaC
1 parent 03d2a45 commit b1b236e

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,14 @@
77
import java.io.IOException;
88
import java.util.List;
99
import java.util.Set;
10+
import java.util.UUID;
11+
import org.springframework.http.ResponseEntity;
1012
import org.springframework.web.bind.annotation.CrossOrigin;
13+
import org.springframework.web.bind.annotation.DeleteMapping;
1114
import org.springframework.web.bind.annotation.GetMapping;
15+
import org.springframework.web.bind.annotation.PathVariable;
16+
import org.springframework.web.bind.annotation.PostMapping;
17+
import org.springframework.web.bind.annotation.RequestBody;
1218
import org.springframework.web.bind.annotation.RestController;
1319

1420
@RestController
@@ -29,4 +35,33 @@ public GetMediaItemsResponse getItems() {
2935
var response = GetMediaItemsResponse.builder().items(responseItems).build();
3036
return response;
3137
}
38+
39+
@GetMapping("/items/{id}")
40+
public MediaItemResponse getItemById(@PathVariable("id") String id) {
41+
Set<MediaItem> items = library.search(SearchCriteria.builder().id(id).build());
42+
MediaItemResponse response =
43+
items.stream().map(MediaItemResponse::from).findFirst().orElseThrow();
44+
return response;
45+
}
46+
47+
@PostMapping("/items")
48+
public CreateMediaItemResponse postItems(@RequestBody CreateMediaItemRequest requestItem) {
49+
MediaItemRequest itemMediaItemRequest = requestItem.getItem();
50+
MediaItem item = MediaItemRequest.asMediaItem(itemMediaItemRequest);
51+
library.addMediaItem(item, librarian);
52+
MediaItemResponse itemResponse = MediaItemResponse.from(item);
53+
return CreateMediaItemResponse.builder().item(itemResponse).build();
54+
}
55+
56+
@DeleteMapping("/items/{id}")
57+
public ResponseEntity<Void> deleteItem(@PathVariable("id") UUID id) {
58+
SearchCriteria searchCriteria = SearchCriteria.builder().id(id.toString()).build();
59+
Set<MediaItem> foundItem = library.search(searchCriteria);
60+
if (foundItem.isEmpty()) {
61+
return ResponseEntity.notFound().build();
62+
}
63+
MediaItem item = foundItem.iterator().next();
64+
library.removeMediaItem(item, librarian);
65+
return ResponseEntity.noContent().build();
66+
}
3267
}

0 commit comments

Comments
 (0)