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 ;
9
5
import java .util .Set ;
6
+ import java .util .UUID ;
7
+
10
8
import org .springframework .http .ResponseEntity ;
11
9
import org .springframework .web .bind .annotation .CrossOrigin ;
12
10
import org .springframework .web .bind .annotation .GetMapping ;
11
+ import org .springframework .web .bind .annotation .PathVariable ;
12
+ import org .springframework .web .bind .annotation .PostMapping ;
13
13
import org .springframework .web .bind .annotation .RestController ;
14
14
15
+ import com .codedifferently .lesson26 .library .Librarian ;
16
+ import com .codedifferently .lesson26 .library .Library ;
17
+ import com .codedifferently .lesson26 .library .MediaItem ;
18
+ import com .codedifferently .lesson26 .library .search .SearchCriteria ;
19
+
20
+ import io .swagger .v3 .oas .annotations .parameters .RequestBody ;
21
+
15
22
@ RestController
16
23
@ CrossOrigin
17
24
public class MediaItemsController {
@@ -31,4 +38,28 @@ public ResponseEntity<GetMediaItemsResponse> getItems() {
31
38
var response = GetMediaItemsResponse .builder ().items (responseItems ).build ();
32
39
return ResponseEntity .ok (response );
33
40
}
41
+
42
+ @ GetMapping ("/items/{id}" )
43
+ public ResponseEntity <MediaItemResponse > getItemsById (@ PathVariable ("id" ) UUID id ) {
44
+ Set <MediaItem > items = library .search (SearchCriteria .builder ().build ());
45
+
46
+ if (items .isEmpty ()) {
47
+ return ResponseEntity .notFound ().build ();
48
+ }
49
+
50
+ MediaItem item = items .iterator ().next ();
51
+ return ResponseEntity .ok (MediaItemResponse .from (item ));
52
+ }
53
+
54
+ @ PostMapping ("/items" )
55
+ public ResponseEntity <CreateMediaItemResponse > postItem (@ RequestBody CreateMediaItemRequest request ) {
56
+ MediaItem newItem = MediaItemRequest .asMediaItem (request .getItem ());
57
+
58
+ library .addMediaItem (newItem , librarian );
59
+
60
+ MediaItemResponse itemResponse = MediaItemResponse .from (newItem );
61
+ CreateMediaItemResponse response = CreateMediaItemResponse .builder ().item (itemResponse ).build ();
62
+
63
+ return ResponseEntity .ok (response );
64
+ }
34
65
}
0 commit comments