7
7
import java .io .IOException ;
8
8
import java .util .List ;
9
9
import java .util .Set ;
10
+ import java .util .UUID ;
10
11
import org .springframework .web .bind .annotation .CrossOrigin ;
12
+ import org .springframework .web .bind .annotation .DeleteMapping ;
11
13
import org .springframework .web .bind .annotation .GetMapping ;
14
+ import org .springframework .web .bind .annotation .PathVariable ;
12
15
import org .springframework .web .bind .annotation .RestController ;
16
+ import org .springframework .web .bind .annotation .PostMapping ;
13
17
14
18
@ RestController
15
19
@ CrossOrigin
@@ -29,4 +33,45 @@ public GetMediaItemsResponse getItems() {
29
33
var response = GetMediaItemsResponse .builder ().items (responseItems ).build ();
30
34
return response ;
31
35
}
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
+ }
32
77
}
0 commit comments