14
14
import org .springframework .web .bind .annotation .PathVariable ;
15
15
import org .springframework .web .bind .annotation .RestController ;
16
16
import org .springframework .web .bind .annotation .PostMapping ;
17
+ import org .springframework .web .bind .annotation .RequestBody ;
17
18
18
19
@ RestController
19
20
@ CrossOrigin
@@ -35,41 +36,28 @@ public GetMediaItemsResponse getItems() {
35
36
}
36
37
37
38
@ 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
+
54
44
library .add (createRequest .getItem ());
55
45
56
46
return MediaItemResponse .from (createRequest .getItem ());
57
47
}
58
48
59
49
@ 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 );
66
54
}
67
55
68
56
@ 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 );
73
61
74
62
return MediaItemResponse .from (itemToDelete );
75
63
}
0 commit comments