11package com .codedifferently .lesson26 .web ;
22
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 ;
73import java .io .IOException ;
84import java .util .List ;
95import java .util .Set ;
6+ import java .util .UUID ;
7+
108import org .springframework .http .ResponseEntity ;
119import org .springframework .web .bind .annotation .CrossOrigin ;
1210import org .springframework .web .bind .annotation .GetMapping ;
11+ import org .springframework .web .bind .annotation .PathVariable ;
12+ import org .springframework .web .bind .annotation .PostMapping ;
1313import org .springframework .web .bind .annotation .RestController ;
1414
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+
1522@ RestController
1623@ CrossOrigin
1724public class MediaItemsController {
@@ -31,4 +38,28 @@ public ResponseEntity<GetMediaItemsResponse> getItems() {
3138 var response = GetMediaItemsResponse .builder ().items (responseItems ).build ();
3239 return ResponseEntity .ok (response );
3340 }
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+ }
3465}
0 commit comments