Skip to content

Commit a753265

Browse files
committed
feat: adds getItemById & postItem methods
1 parent 9de33c4 commit a753265

File tree

1 file changed

+35
-4
lines changed

1 file changed

+35
-4
lines changed

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

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
package com.codedifferently.lesson26.web;
22

3-
import com.codedifferently.lesson26.library.Librarian;
4-
import com.codedifferently.lesson26.library.Library;
5-
import com.codedifferently.lesson26.library.MediaItem;
6-
import com.codedifferently.lesson26.library.search.SearchCriteria;
73
import java.io.IOException;
84
import java.util.List;
95
import java.util.Set;
6+
import java.util.UUID;
7+
108
import org.springframework.http.ResponseEntity;
119
import org.springframework.web.bind.annotation.CrossOrigin;
1210
import org.springframework.web.bind.annotation.GetMapping;
11+
import org.springframework.web.bind.annotation.PathVariable;
12+
import org.springframework.web.bind.annotation.PostMapping;
1313
import org.springframework.web.bind.annotation.RestController;
1414

15+
import com.codedifferently.lesson26.library.Librarian;
16+
import com.codedifferently.lesson26.library.Library;
17+
import com.codedifferently.lesson26.library.MediaItem;
18+
import com.codedifferently.lesson26.library.search.SearchCriteria;
19+
20+
import io.swagger.v3.oas.annotations.parameters.RequestBody;
21+
1522
@RestController
1623
@CrossOrigin
1724
public class MediaItemsController {
@@ -31,4 +38,28 @@ public ResponseEntity<GetMediaItemsResponse> getItems() {
3138
var response = GetMediaItemsResponse.builder().items(responseItems).build();
3239
return ResponseEntity.ok(response);
3340
}
41+
42+
@GetMapping("/items/{id}")
43+
public ResponseEntity<MediaItemResponse> getItemsById(@PathVariable("id") UUID id) {
44+
Set<MediaItem> items = library.search(SearchCriteria.builder().build());
45+
46+
if (items.isEmpty()) {
47+
return ResponseEntity.notFound().build();
48+
}
49+
50+
MediaItem item = items.iterator().next();
51+
return ResponseEntity.ok(MediaItemResponse.from(item));
52+
}
53+
54+
@PostMapping("/items")
55+
public ResponseEntity<CreateMediaItemResponse> postItem(@RequestBody CreateMediaItemRequest request) {
56+
MediaItem newItem = MediaItemRequest.asMediaItem(request.getItem());
57+
58+
library.addMediaItem(newItem, librarian);
59+
60+
MediaItemResponse itemResponse = MediaItemResponse.from(newItem);
61+
CreateMediaItemResponse response = CreateMediaItemResponse.builder().item(itemResponse).build();
62+
63+
return ResponseEntity.ok(response);
64+
}
3465
}

0 commit comments

Comments
 (0)