Skip to content

Commit 4d05a9c

Browse files
committed
Adds Shawn-Lesson26 Api Editor
1 parent 230265f commit 4d05a9c

File tree

2 files changed

+67
-6
lines changed

2 files changed

+67
-6
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: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,26 @@
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+
import java.util.UUID;
7+
8+
import org.springframework.http.ResponseEntity;
109
import org.springframework.web.bind.annotation.CrossOrigin;
10+
import org.springframework.web.bind.annotation.DeleteMapping;
1111
import org.springframework.web.bind.annotation.GetMapping;
12+
import org.springframework.web.bind.annotation.PathVariable;
13+
import org.springframework.web.bind.annotation.PostMapping;
14+
import org.springframework.web.bind.annotation.RequestBody;
1215
import org.springframework.web.bind.annotation.RestController;
1316

17+
import com.codedifferently.lesson26.library.Librarian;
18+
import com.codedifferently.lesson26.library.Library;
19+
import com.codedifferently.lesson26.library.MediaItem;
20+
import com.codedifferently.lesson26.library.search.SearchCriteria;
21+
22+
import jakarta.validation.Valid;
23+
1424
@RestController
1525
@CrossOrigin
1626
public class MediaItemsController {
@@ -29,4 +39,53 @@ public GetMediaItemsResponse getItems() {
2939
var response = GetMediaItemsResponse.builder().items(responseItems).build();
3040
return response;
3141
}
42+
43+
@GetMapping("/items/{id}")
44+
public ResponseEntity<MediaItemResponse> getItemById(@PathVariable("id") UUID id){
45+
SearchCriteria searchCriteria = SearchCriteria.builder().id(id.toString()).build();
46+
47+
Set<MediaItem> foundItem = library.search(searchCriteria);
48+
49+
if (foundItem.isEmpty()){
50+
return ResponseEntity.notFound().build();
51+
}
52+
53+
MediaItem item = foundItem.iterator().next();
54+
MediaItemResponse response = MediaItemResponse.from(item);
55+
56+
return ResponseEntity.ok(response);
57+
}
58+
59+
@DeleteMapping("/items/{id}")
60+
public ResponseEntity<Void> deleteItem(@PathVariable("id") UUID id){
61+
SearchCriteria searchCriteria = SearchCriteria.builder().id(id.toString()).build();
62+
63+
Set<MediaItem> foundItem = library.search(searchCriteria);
64+
65+
if (foundItem.isEmpty()){
66+
return ResponseEntity.notFound().build();
67+
}
68+
69+
MediaItem item = foundItem.iterator().next();
70+
71+
library.removeMediaItem(item, librarian);
72+
73+
return ResponseEntity.noContent().build();
74+
}
75+
76+
77+
@PostMapping("/items")
78+
public CreateMediaItemResponse addsItem(@Valid @RequestBody CreateMediaItemRequest request){
79+
80+
MediaItemRequest itemRequest = request.getItem();
81+
82+
MediaItem item = MediaItemRequest.asMediaItem(itemRequest);
83+
84+
library.addMediaItem(item, librarian);
85+
86+
CreateMediaItemResponse response = CreateMediaItemResponse.builder().item(getItemById(item.getId()).getBody()).build();
87+
88+
return response;
89+
90+
}
3291
}

0 commit comments

Comments
 (0)