1414import org .springframework .web .bind .annotation .PathVariable ;
1515import org .springframework .web .bind .annotation .RestController ;
1616import org .springframework .web .bind .annotation .PostMapping ;
17+ import org .springframework .web .bind .annotation .RequestBody ;
1718
1819@ RestController
1920@ CrossOrigin
@@ -35,41 +36,28 @@ public GetMediaItemsResponse getItems() {
3536 }
3637
3738 @ 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-
39+ public MediaItemResponse addItemById (@ RequestBody CreateMediaItemRequest createRequest ) {
40+ if (createRequest .getItem ().getId () == null ) {
41+ createRequest .getItem ().setId (UUID .randomUUID ());
42+ }
43+
5444 library .add (createRequest .getItem ());
5545
5646 return MediaItemResponse .from (createRequest .getItem ());
5747 }
5848
5949 @ GetMapping ("/items/:{id}" )
60- public GetMediaItemsResponse getItemById (@ PathVariable ("id" ) String id ) {
61- Set <MediaItem > item = library .search (SearchCriteria .builder ().id (id ).build ());
62- List <MediaItemResponse > responseItemById = item .stream ().map (MediaItemResponse ::from ).toList ();
63- MediaItemResponse findItem = responseItemById .stream ().findFirst ().orElseThrow ();
64- var response = GetMediaItemsResponse .builder ().item (responseItemById ).build ();
65- return response ;
50+ public MediaItemResponse getItemById (@ PathVariable ("id" ) UUID id ) {
51+ MediaItem item = library .search (SearchCriteria .builder ().id (id .toString ()).build ()).stream ().findFirst ().orElseThrow ();
52+
53+ return MediaItemResponse .from (item );
6654 }
6755
6856 @ DeleteMapping ("/items/:{id}" )
69- public MediaItemResponse deleteItemById (@ PathVariable ("id" ) String id ) {
70- MediaItem itemToDelete = library .search (SearchCriteria .builder ().id (id ).build ()).stream ().findFirst ().orElseThrow ();
71-
72- library .delete (itemToDelete );
57+ public MediaItemResponse deleteItemById (@ PathVariable ("id" ) UUID id ) {
58+ MediaItem itemToDelete = library .search (SearchCriteria .builder ().id (id . toString () ).build ()).stream ().findFirst ().orElseThrow ();
59+ Librarian librarian = library . getLibrarians (). stream (). findFirst (). orElseThrow ();
60+ library .removeMediaItem (itemToDelete , librarian );
7361
7462 return MediaItemResponse .from (itemToDelete );
7563 }
0 commit comments