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 ;
10
7
import java .util .UUID ;
8
+
11
9
import org .springframework .http .ResponseEntity ;
12
10
import org .springframework .web .bind .annotation .CrossOrigin ;
13
11
import org .springframework .web .bind .annotation .DeleteMapping ;
17
15
import org .springframework .web .bind .annotation .RequestBody ;
18
16
import org .springframework .web .bind .annotation .RestController ;
19
17
18
+ import com .codedifferently .lesson26 .library .Librarian ;
19
+ import com .codedifferently .lesson26 .library .Library ;
20
+ import com .codedifferently .lesson26 .library .MediaItem ;
21
+ import com .codedifferently .lesson26 .library .search .SearchCriteria ;
22
+
23
+ import jakarta .validation .Valid ;
24
+
20
25
@ RestController
21
26
@ CrossOrigin
22
27
public class MediaItemsController {
@@ -37,15 +42,20 @@ public GetMediaItemsResponse getItems() {
37
42
}
38
43
39
44
@ GetMapping ("/items/{id}" )
40
- public MediaItemResponse getItemById (@ PathVariable ("id" ) String id ) {
45
+ public ResponseEntity < MediaItemResponse > getItemById (@ PathVariable ("id" ) String id ) {
41
46
Set <MediaItem > items = library .search (SearchCriteria .builder ().id (id ).build ());
42
- MediaItemResponse response =
43
- items .stream ().map (MediaItemResponse ::from ).findFirst ().orElseThrow ();
44
- return response ;
47
+ Optional <MediaItemResponse > response =
48
+ items .stream ().map (MediaItemResponse ::from ).findFirst ();
49
+
50
+ if (response .isPresent ()){
51
+ return ResponseEntity .ok (response .get ());
52
+ }
53
+
54
+ return ResponseEntity .notFound ().build ();
45
55
}
46
56
47
57
@ PostMapping ("/items" )
48
- public CreateMediaItemResponse postItems (@ RequestBody CreateMediaItemRequest requestItem ) {
58
+ public CreateMediaItemResponse postItems (@ Valid @ RequestBody CreateMediaItemRequest requestItem ) {
49
59
MediaItemRequest itemMediaItemRequest = requestItem .getItem ();
50
60
MediaItem item = MediaItemRequest .asMediaItem (itemMediaItemRequest );
51
61
library .addMediaItem (item , librarian );
0 commit comments