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 .exceptions .MediaItemCheckedOutException ;
7
+ import com .codedifferently .lesson26 .library .search .SearchCriteria ;
8
+ import jakarta .validation .Valid ;
3
9
import java .io .IOException ;
4
10
import java .util .List ;
5
11
import java .util .Set ;
6
12
import java .util .UUID ;
7
-
8
13
import org .springframework .http .ResponseEntity ;
9
14
import org .springframework .web .bind .annotation .CrossOrigin ;
10
15
import org .springframework .web .bind .annotation .DeleteMapping ;
14
19
import org .springframework .web .bind .annotation .RequestBody ;
15
20
import org .springframework .web .bind .annotation .RestController ;
16
21
17
- import com .codedifferently .lesson26 .library .Librarian ;
18
- import com .codedifferently .lesson26 .library .Library ;
19
- import com .codedifferently .lesson26 .library .MediaItem ;
20
- import com .codedifferently .lesson26 .library .exceptions .MediaItemCheckedOutException ;
21
- import com .codedifferently .lesson26 .library .search .SearchCriteria ;
22
-
23
22
@ RestController
24
23
@ CrossOrigin
25
24
public class MediaItemsController {
@@ -41,7 +40,7 @@ public ResponseEntity<GetMediaItemsResponse> getItems() {
41
40
}
42
41
43
42
@ GetMapping ("/items/{id}" )
44
- public ResponseEntity <MediaItemResponse > getItemsById (@ PathVariable ("id" ) UUID id ) {
43
+ public ResponseEntity <MediaItemResponse > getItemsById (@ Valid @ PathVariable ("id" ) UUID id ) {
45
44
Set <MediaItem > items = library .search (SearchCriteria .builder ().id (id .toString ()).build ());
46
45
47
46
if (items .isEmpty ()) {
@@ -53,14 +52,15 @@ public ResponseEntity<MediaItemResponse> getItemsById(@PathVariable("id") UUID i
53
52
}
54
53
55
54
@ PostMapping ("/items" )
56
- public ResponseEntity <CreateMediaItemResponse > postItem (@ RequestBody CreateMediaItemRequest request ) {
55
+ public ResponseEntity <CreateMediaItemResponse > postItem (
56
+ @ Valid @ RequestBody CreateMediaItemRequest request ) {
57
57
MediaItem newItem = MediaItemRequest .asMediaItem (request .getItem ());
58
58
59
59
library .addMediaItem (newItem , librarian );
60
60
61
61
MediaItemResponse itemResponse = MediaItemResponse .from (newItem );
62
62
CreateMediaItemResponse response = CreateMediaItemResponse .builder ().item (itemResponse ).build ();
63
-
63
+
64
64
return ResponseEntity .ok (response );
65
65
}
66
66
@@ -71,7 +71,7 @@ public ResponseEntity<Void> deleteItem(@PathVariable("id") UUID id) {
71
71
if (items .isEmpty ()) {
72
72
return ResponseEntity .notFound ().build ();
73
73
}
74
-
74
+
75
75
MediaItem itemToDelete = items .iterator ().next ();
76
76
77
77
try {
0 commit comments