77import java .io .IOException ;
88import java .util .List ;
99import java .util .Set ;
10+ import java .util .UUID ;
1011import org .springframework .web .bind .annotation .CrossOrigin ;
12+ import org .springframework .web .bind .annotation .DeleteMapping ;
1113import org .springframework .web .bind .annotation .GetMapping ;
14+ import org .springframework .web .bind .annotation .PathVariable ;
1215import org .springframework .web .bind .annotation .RestController ;
16+ import org .springframework .web .bind .annotation .PostMapping ;
1317
1418@ RestController
1519@ CrossOrigin
@@ -29,4 +33,45 @@ public GetMediaItemsResponse getItems() {
2933 var response = GetMediaItemsResponse .builder ().items (responseItems ).build ();
3034 return response ;
3135 }
36+
37+ @ PostMapping ("/items" )
38+ public MediaItemResponse postItem () {
39+ //UUID id = UUID.randomUUID();
40+ MediaItemRequest newItem = CreateMediaItemRequest .builder ()
41+ .id (UUID .randomUUID ())
42+ .type ("Book" )
43+ .isbn ("13" )
44+ .title ("The Fall of the House of Usher" )
45+ .authors (new String [] {"Edgar Allan Poe" })
46+ .edition ("1st Edition" )
47+ .pages (25 )
48+ .build ();
49+
50+ CreateMediaItemRequest createRequest = CreateMediaItemRequest .builder ()
51+ .item (newItem )
52+ .build ();
53+
54+ library .add (createRequest .getItem ());
55+
56+ return MediaItemResponse .from (createRequest .getItem ());
57+ }
58+
59+ @ GetMapping ("/items/:{id}" )
60+ public GetMediaItemsResponse getItemById (@ PathVariable ("id" ) String id ) {
61+ Set <MediaItem > item = library .search (SearchCriteria .builder ().id (id ).build ());
62+ MediaItemResponse responseItemById = item .stream ().map (MediaItemResponse ::from ).toList ().findFirst ().orElseThrow ();
63+ var response = GetMediaItemsResponse .builder ().item (responseItemById ).build ();
64+ return response ;
65+ }
66+
67+ @ DeleteMapping ("/items/:{id}" )
68+ public MediaItemResponse deleteItemById (@ PathVariable ("id" ) String id ) {
69+ Set <MediaItem > itemToDelete = library .search (SearchCriteria .builder ().id (id ).build ());
70+ //MediaItemRequest deleteItem = CreateMediaItemRequest.builder().build();
71+ CreateMediaItemRequest createDeleteRequest = CreateMediaItemRequest .builder ().deleteItem (itemToDelete ).build ();
72+
73+ library .delete (createDeleteRequest .getItem ());
74+
75+ return MediaItemResponse .from (createDeleteRequest .getItem ());
76+ }
3277}
0 commit comments