Skip to content

Commit 09484d1

Browse files
committed
chore: Added required API server methods along with the required imports
1 parent 426b05c commit 09484d1

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package com.codedifferently.lesson26.web;
22

3+
import java.util.List;
4+
import java.util.UUID;
5+
36
import com.codedifferently.lesson26.library.Book;
47
import com.codedifferently.lesson26.library.Dvd;
58
import com.codedifferently.lesson26.library.Magazine;
69
import com.codedifferently.lesson26.library.MediaItem;
710
import com.codedifferently.lesson26.library.Newspaper;
11+
812
import jakarta.validation.constraints.NotBlank;
9-
import java.util.List;
10-
import java.util.UUID;
1113
import lombok.AllArgsConstructor;
1214
import lombok.Builder;
1315
import lombok.Data;

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

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,17 @@
99
import org.springframework.web.bind.annotation.DeleteMapping;
1010
import org.springframework.web.bind.annotation.GetMapping;
1111
import org.springframework.web.bind.annotation.PathVariable;
12+
import org.springframework.web.bind.annotation.PostMapping;
13+
import org.springframework.web.bind.annotation.RequestBody;
1214
import org.springframework.web.bind.annotation.RestController;
1315

1416
import com.codedifferently.lesson26.library.Librarian;
1517
import com.codedifferently.lesson26.library.Library;
1618
import com.codedifferently.lesson26.library.MediaItem;
1719
import com.codedifferently.lesson26.library.search.SearchCriteria;
1820

21+
import jakarta.validation.Valid;
22+
1923
@RestController
2024
@CrossOrigin
2125
public class MediaItemsController {
@@ -28,6 +32,8 @@ public MediaItemsController(Library library) throws IOException {
2832
this.librarian = library.getLibrarians().stream().findFirst().orElseThrow();
2933
}
3034

35+
// Gets all media items.
36+
3137
@GetMapping("/items")
3238
public ResponseEntity<GetMediaItemsResponse> getItems() {
3339
Set<MediaItem> items = library.search(SearchCriteria.builder().build());
@@ -36,17 +42,42 @@ public ResponseEntity<GetMediaItemsResponse> getItems() {
3642
return ResponseEntity.ok(response);
3743
}
3844

45+
//
46+
3947
@DeleteMapping("/items/{id}")
4048
public ResponseEntity<Void> deleteItem(@PathVariable String id) {
4149
Set<MediaItem> items = library.search(SearchCriteria.builder().id(id).build());
42-
4350
if (items.isEmpty()) {
4451
return ResponseEntity.notFound().build(); // Return 404 if item is not found
4552
}
46-
4753
MediaItem itemToDelete = items.iterator().next();
4854
library.removeMediaItem(itemToDelete, librarian); // Assuming there's a method to remove items in the library
49-
5055
return ResponseEntity.noContent().build(); // Return 204 No Content if deletion is successful
5156
}
57+
58+
//
59+
60+
@GetMapping("/items/{id}")
61+
public ResponseEntity<MediaItemResponse> getItem(@PathVariable String id) {
62+
Set<MediaItem> items = library.search(SearchCriteria.builder().id(id).build());
63+
if (items.isEmpty()) {
64+
return ResponseEntity.notFound().build(); // Return 404 if item is not found
65+
}
66+
MediaItem item = items.iterator().next();
67+
MediaItemResponse response = MediaItemResponse.from(item);
68+
return ResponseEntity.ok(response);
69+
}
70+
71+
//
72+
73+
@PostMapping("/items")
74+
public ResponseEntity<CreateMediaItemResponse> createItem(
75+
@Valid @RequestBody CreateMediaItemRequest createRequest) {
76+
MediaItemRequest itemRequest = createRequest.getItem();
77+
MediaItem newItem = MediaItemRequest.asMediaItem(itemRequest);
78+
library.addMediaItem(newItem, this.librarian);
79+
MediaItemResponse itemResponse = MediaItemResponse.from(newItem);
80+
CreateMediaItemResponse response = CreateMediaItemResponse.builder().item(itemResponse).build();
81+
return ResponseEntity.ok(response);
82+
}
5283
}

0 commit comments

Comments
 (0)