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 ;
37import java .io .IOException ;
48import java .util .List ;
59import java .util .Optional ;
610import java .util .Set ;
711import java .util .UUID ;
8-
912import org .springframework .http .HttpStatus ;
1013import org .springframework .http .ResponseEntity ;
1114import org .springframework .web .bind .annotation .CrossOrigin ;
1619import org .springframework .web .bind .annotation .RequestBody ;
1720import org .springframework .web .bind .annotation .RestController ;
1821
19- import com .codedifferently .lesson26 .library .Librarian ;
20- import com .codedifferently .lesson26 .library .Library ;
21- import com .codedifferently .lesson26 .library .MediaItem ;
22- import com .codedifferently .lesson26 .library .search .SearchCriteria ;
23-
2422@ RestController
2523@ CrossOrigin
2624public class MediaItemsController {
@@ -40,50 +38,48 @@ public ResponseEntity<GetMediaItemsResponse> getItems() {
4038 var response = GetMediaItemsResponse .builder ().items (responseItems ).build ();
4139 return ResponseEntity .ok (response );
4240 }
41+
4342 @ PostMapping ("/items" )
44- public ResponseEntity <MediaItemResponse > createItem (@ RequestBody MediaItemRequest request ) {
43+ public ResponseEntity <MediaItemResponse > createItem (@ RequestBody MediaItemRequest request ) {
4544 MediaItem newItem = MediaItemRequest .asMediaItem (request );
4645
4746 Librarian librarian = new Librarian ("system" , "system@example.com" );
4847
4948 library .addMediaItem (newItem , librarian );
5049
5150 return new ResponseEntity <>(MediaItemResponse .from (newItem ), HttpStatus .CREATED );
52- }
51+ }
5352
54- @ GetMapping ("/items/{id}" )
55- public ResponseEntity <MediaItemResponse > getItemById (@ PathVariable UUID id ) {
53+ @ GetMapping ("/items/{id}" )
54+ public ResponseEntity <MediaItemResponse > getItemById (@ PathVariable UUID id ) {
5655 Set <MediaItem > allItems = library .search (SearchCriteria .builder ().build ());
5756
58- Optional <MediaItem > itemOpt = allItems .stream ()
59- .filter (item -> item .getId ().equals (id ))
60- .findFirst ();
57+ Optional <MediaItem > itemOpt =
58+ allItems .stream ().filter (item -> item .getId ().equals (id )).findFirst ();
6159
6260 if (itemOpt .isEmpty ()) {
63- return ResponseEntity .notFound ().build ();
61+ return ResponseEntity .notFound ().build ();
6462 }
6563
6664 MediaItemResponse response = MediaItemResponse .from (itemOpt .get ());
6765 return ResponseEntity .ok (response );
68- }
69-
66+ }
7067
71- @ DeleteMapping ("/items/{id}" )
72- public ResponseEntity <Void > deleteItemById (@ PathVariable UUID id ) {
73- Optional <MediaItem > itemOpt = library . search ( SearchCriteria . builder (). build ())
74- .stream ()
75- .filter (item -> item .getId ().equals (id ))
76- .findFirst ();
68+ @ DeleteMapping ("/items/{id}" )
69+ public ResponseEntity <Void > deleteItemById (@ PathVariable UUID id ) {
70+ Optional <MediaItem > itemOpt =
71+ library . search ( SearchCriteria . builder (). build ()) .stream ()
72+ .filter (item -> item .getId ().equals (id ))
73+ .findFirst ();
7774
7875 if (itemOpt .isEmpty ()) {
79- return ResponseEntity .notFound ().build ();
76+ return ResponseEntity .notFound ().build ();
8077 }
8178
8279 MediaItem item = itemOpt .get ();
8380 Librarian librarian = new Librarian ("system" , "system@example.com" ); // placeholder
8481 library .removeMediaItem (item , librarian );
8582
8683 return ResponseEntity .noContent ().build (); // 204 No Content
87- }
88-
84+ }
8985}
0 commit comments