1
1
package com .codedifferently .lesson26 .web ;
2
2
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 ;
7
3
import java .io .IOException ;
8
4
import java .util .List ;
5
+ import java .util .Optional ;
9
6
import java .util .Set ;
7
+ import java .util .UUID ;
8
+
9
+ import org .springframework .http .ResponseEntity ;
10
10
import org .springframework .web .bind .annotation .CrossOrigin ;
11
+ import org .springframework .web .bind .annotation .DeleteMapping ;
11
12
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 ;
12
17
import org .springframework .web .bind .annotation .RestController ;
13
18
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
+
14
24
@ RestController
25
+ @ RequestMapping ("/items" )
15
26
@ CrossOrigin
16
27
public class MediaItemsController {
17
28
private final Library library ;
@@ -22,11 +33,51 @@ public MediaItemsController(Library library) throws IOException {
22
33
this .librarian = library .getLibrarians ().stream ().findFirst ().orElseThrow ();
23
34
}
24
35
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 ());
28
41
List <MediaItemResponse > responseItems = items .stream ().map (MediaItemResponse ::from ).toList ();
29
42
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 ;
31
82
}
32
83
}
0 commit comments