Skip to content

Commit 57b994b

Browse files
committed
feat: modifies mediaItemsController.java to accept POST, GET, GET:ID, and DELETE:ID. Lesson_26 -JosephCaballero
1 parent 70f0765 commit 57b994b

File tree

1 file changed

+59
-8
lines changed

1 file changed

+59
-8
lines changed
Lines changed: 59 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,28 @@
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;
5+
import java.util.Optional;
96
import java.util.Set;
7+
import java.util.UUID;
8+
9+
import org.springframework.http.ResponseEntity;
1010
import org.springframework.web.bind.annotation.CrossOrigin;
11+
import org.springframework.web.bind.annotation.DeleteMapping;
1112
import org.springframework.web.bind.annotation.GetMapping;
13+
import org.springframework.web.bind.annotation.PathVariable;
14+
import org.springframework.web.bind.annotation.PostMapping;
15+
import org.springframework.web.bind.annotation.RequestBody;
16+
import org.springframework.web.bind.annotation.RequestMapping;
1217
import org.springframework.web.bind.annotation.RestController;
1318

19+
import com.codedifferently.lesson26.library.Librarian;
20+
import com.codedifferently.lesson26.library.Library;
21+
import com.codedifferently.lesson26.library.MediaItem;
22+
import com.codedifferently.lesson26.library.search.SearchCriteria;
23+
1424
@RestController
25+
@RequestMapping("/items")
1526
@CrossOrigin
1627
public class MediaItemsController {
1728
private final Library library;
@@ -22,11 +33,51 @@ public MediaItemsController(Library library) throws IOException {
2233
this.librarian = library.getLibrarians().stream().findFirst().orElseThrow();
2334
}
2435

25-
@GetMapping("/items")
26-
public GetMediaItemsResponse getItems() {
27-
Set<MediaItem> items = library.search(SearchCriteria.builder().build());
36+
37+
38+
@GetMapping()
39+
public ResponseEntity<GetMediaItemsResponse> getItemById() {
40+
Set<MediaItem> items = library.search(SearchCriteria.builder().build());
2841
List<MediaItemResponse> responseItems = items.stream().map(MediaItemResponse::from).toList();
2942
var response = GetMediaItemsResponse.builder().items(responseItems).build();
30-
return response;
43+
return ResponseEntity.ok(response);
44+
}
45+
46+
@GetMapping(value = "/{id}")
47+
public ResponseEntity<MediaItemResponse> getItemById(@PathVariable("id") UUID id) {
48+
49+
System.out.println(id.toString());
50+
51+
52+
Set<MediaItem> items = library.search(SearchCriteria.builder().id(id.toString()).build());
53+
54+
Optional<MediaItem> matchedItem = items.stream()
55+
.filter(item -> item.getId().equals(id))
56+
.findFirst();
57+
System.out.println("items");
58+
System.out.println(items);
59+
System.out.println(matchedItem);
60+
System.out.println("mathcedItems");
61+
return matchedItem.map(item -> {
62+
MediaItemResponse responseItem = MediaItemResponse.from(item);
63+
return ResponseEntity.ok(responseItem);
64+
}).orElse(ResponseEntity.notFound().build());
65+
}
66+
67+
@PostMapping()
68+
public CreateMediaItemResponse postItems(@RequestBody MediaItemRequest request) {
69+
MediaItem newMediaItem = MediaItemRequest.asMediaItem(request);
70+
71+
library.addMediaItem(newMediaItem, librarian);
72+
73+
MediaItemResponse responseItem = MediaItemResponse.from(newMediaItem);
74+
return CreateMediaItemResponse.builder().item(responseItem).build();
75+
}
76+
77+
@DeleteMapping(value = "/{id}")
78+
public Set<MediaItem> deleteItem(@PathVariable("id") UUID id){
79+
library.removeMediaItem(id, librarian);
80+
Set<MediaItem> libraryAltercation = library.search(SearchCriteria.builder().build());
81+
return libraryAltercation;
3182
}
3283
}

0 commit comments

Comments
 (0)