77import jakarta .validation .Valid ;
88import java .io .IOException ;
99import java .util .List ;
10+ import java .util .Map ;
1011import java .util .Optional ;
1112import java .util .Set ;
1213import java .util .UUID ;
13- import org .springframework .http .HttpStatus ;
1414import org .springframework .http .ResponseEntity ;
1515import org .springframework .web .bind .annotation .CrossOrigin ;
1616import org .springframework .web .bind .annotation .DeleteMapping ;
@@ -41,16 +41,22 @@ public ResponseEntity<GetMediaItemsResponse> getItems() {
4141 }
4242
4343 @ PostMapping ("/items" )
44- public ResponseEntity <MediaItemResponse > createItem (
45- @ Valid @ RequestBody MediaItemRequest request ) {
44+ public ResponseEntity <Map <String , MediaItemResponse >> createItem (
45+ @ Valid @ RequestBody MediaItemWrapper wrapper ) {
46+
47+ MediaItemRequest request = wrapper .getItem ();
48+ if (request == null ) {
49+ throw new IllegalArgumentException ("Item must be provided in request body" );
50+ }
51+
4652 MediaItem newItem = MediaItemRequest .asMediaItem (request );
47- Librarian librarian = new Librarian ("system" , "system@example.com" );
4853 library .addMediaItem (newItem , librarian );
49- return new ResponseEntity <>( MediaItemResponse .from (newItem ), HttpStatus . CREATED );
54+ return ResponseEntity . ok ( Map . of ( "item" , MediaItemResponse .from (newItem )) );
5055 }
5156
5257 @ GetMapping ("/items/{id}" )
53- public ResponseEntity <MediaItemResponse > getItemById (@ PathVariable UUID id ) {
58+ public ResponseEntity <MediaItemResponse > getItemById (@ PathVariable ("id" ) UUID id ) {
59+
5460 Set <MediaItem > allItems = library .search (SearchCriteria .builder ().build ());
5561
5662 Optional <MediaItem > itemOpt =
@@ -65,7 +71,7 @@ public ResponseEntity<MediaItemResponse> getItemById(@PathVariable UUID id) {
6571 }
6672
6773 @ DeleteMapping ("/items/{id}" )
68- public ResponseEntity <Void > deleteItemById (@ PathVariable UUID id ) {
74+ public ResponseEntity <Void > deleteItemById (@ PathVariable ( "id" ) UUID id ) {
6975 Optional <MediaItem > itemOpt =
7076 library .search (SearchCriteria .builder ().build ()).stream ()
7177 .filter (item -> item .getId ().equals (id ))
0 commit comments