Skip to content

Commit 311ffcd

Browse files
committed
feat:Adds lesson_26 work
1 parent 17b8ddc commit 311ffcd

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@
44
import com.codedifferently.lesson26.library.Library;
55
import com.codedifferently.lesson26.library.MediaItem;
66
import com.codedifferently.lesson26.library.search.SearchCriteria;
7+
import jakarta.validation.Valid;
78
import java.io.IOException;
89
import java.util.List;
910
import java.util.Set;
11+
import org.springframework.http.ResponseEntity;
1012
import org.springframework.web.bind.annotation.CrossOrigin;
1113
import org.springframework.web.bind.annotation.DeleteMapping;
1214
import org.springframework.web.bind.annotation.GetMapping;
1315
import org.springframework.web.bind.annotation.PathVariable;
16+
import org.springframework.web.bind.annotation.PostMapping;
17+
import org.springframework.web.bind.annotation.RequestBody;
1418
import org.springframework.web.bind.annotation.RestController;
1519

1620
@RestController
@@ -32,24 +36,33 @@ public GetMediaItemsResponse getItems() {
3236
return response;
3337
}
3438

35-
@GetMapping("/items")
36-
public GetMediaItemsResponse postItems() {
37-
Set<MediaItem> items = library.search(SearchCriteria.builder().build());
38-
List<MediaItemResponse> responseItems = items.stream().map(MediaItemResponse::from).toList();
39-
return postItems();
39+
@PostMapping("/items")
40+
public ResponseEntity<?> postItems(@Valid @RequestBody CreateMediaItemRequest request) {
41+
MediaItemRequest itemRequest = request.getItem();
42+
MediaItem item = MediaItemRequest.asMediaItem(itemRequest);
43+
library.addMediaItem(item, librarian);
44+
MediaItemResponse response = MediaItemResponse.from(item);
45+
return ResponseEntity.ok(CreateMediaItemResponse.builder().item(response).build());
4046
}
4147

42-
@GetMapping("/items/:id")
43-
public GetMediaItemsResponse getItemsId(@PathVariable String id) {
48+
@GetMapping("/items/{id}")
49+
public ResponseEntity<GetMediaItemsResponse> getItemsId(@PathVariable String id) {
4450
Set<MediaItem> items = library.search(SearchCriteria.builder().id(id).build());
51+
if (items.isEmpty()) {
52+
return ResponseEntity.notFound().build();
53+
}
4554
MediaItemResponse responseItem = items.stream().map(MediaItemResponse::from).iterator().next();
46-
return GetMediaItemsResponse.builder().item(responseItem).build();
55+
return ResponseEntity.ok(GetMediaItemsResponse.builder().item(responseItem).build());
4756
}
4857

49-
@DeleteMapping(value = "{id}")
50-
public void deletebById(@PathVariable String id) {
58+
@DeleteMapping("/items/{id}")
59+
public ResponseEntity<?> deletebById(@PathVariable String id) {
5160
Set<MediaItem> items = library.search(SearchCriteria.builder().id(id).build());
5261
MediaItem item = items.iterator().next();
62+
if (items.isEmpty() || item == null) {
63+
ResponseEntity.notFound().build();
64+
}
5365
library.removeMediaItem(item, librarian);
66+
return ResponseEntity.noContent().build();
5467
}
5568
}

0 commit comments

Comments
 (0)