Skip to content

Commit f9e4559

Browse files
committed
feat: added HTTP methods for Chelsea
1 parent 230265f commit f9e4559

File tree

1 file changed

+31
-4
lines changed

1 file changed

+31
-4
lines changed

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

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
package 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;
73
import java.io.IOException;
84
import java.util.List;
95
import java.util.Set;
6+
107
import org.springframework.web.bind.annotation.CrossOrigin;
118
import org.springframework.web.bind.annotation.GetMapping;
129
import org.springframework.web.bind.annotation.RestController;
1310

11+
import com.codedifferently.lesson26.library.Librarian;
12+
import com.codedifferently.lesson26.library.Library;
13+
import com.codedifferently.lesson26.library.MediaItem;
14+
import com.codedifferently.lesson26.library.search.SearchCriteria;
15+
1416
@RestController
1517
@CrossOrigin
1618
public class MediaItemsController {
@@ -29,4 +31,29 @@ public GetMediaItemsResponse getItems() {
2931
var response = GetMediaItemsResponse.builder().items(responseItems).build();
3032
return response;
3133
}
34+
@PostMapping("/items")
35+
public CreateMediaItemResponse createItem(@RequestBody CreateMediaItemRequest request) {
36+
if (request == null || request.getItem() == null) {
37+
throw new IllegalArgumentException("Invalid request body");
38+
}
39+
MediaItem newItem = request.toMediaItem();
40+
library.addItem(newItem);
41+
return new CreateMediaItemResponse(newItem);
42+
}
43+
@GetMapping("/items/{id}")
44+
public MediaItemResponse getItemById(@PathVariable String id) {
45+
MediaItem item = library.getItemById(id);
46+
if (item == null) {
47+
throw new MediaItemNotFoundException("Media item not found");
48+
}
49+
return MediaItemResponse.from(item);
50+
}
51+
@DeleteMapping("/items/{id}")
52+
public ResponseEntity<Void> deleteItem(@PathVariable String id) {
53+
boolean deleted = library.deleteItem(id);
54+
if (!deleted) {
55+
throw new MediaItemNotFoundException("Item not found");
56+
}
57+
return ResponseEntity.noContent().build();
58+
}
3259
}

0 commit comments

Comments
 (0)