Skip to content

Commit a5d1cd2

Browse files
committed
feat: add first draft of HTTP Methods for API
1 parent 77d3ef4 commit a5d1cd2

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

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

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@
77
import java.io.IOException;
88
import java.util.List;
99
import java.util.Set;
10+
import java.util.UUID;
1011
import org.springframework.web.bind.annotation.CrossOrigin;
12+
import org.springframework.web.bind.annotation.DeleteMapping;
1113
import org.springframework.web.bind.annotation.GetMapping;
14+
import org.springframework.web.bind.annotation.PathVariable;
1215
import org.springframework.web.bind.annotation.RestController;
16+
import org.springframework.web.bind.annotation.PostMapping;
1317

1418
@RestController
1519
@CrossOrigin
@@ -29,4 +33,45 @@ public GetMediaItemsResponse getItems() {
2933
var response = GetMediaItemsResponse.builder().items(responseItems).build();
3034
return response;
3135
}
36+
37+
@PostMapping("/items")
38+
public MediaItemResponse postItem() {
39+
//UUID id = UUID.randomUUID();
40+
MediaItemRequest newItem = CreateMediaItemRequest.builder()
41+
.id(UUID.randomUUID())
42+
.type("Book")
43+
.isbn("13")
44+
.title("The Fall of the House of Usher")
45+
.authors(new String[] {"Edgar Allan Poe"})
46+
.edition("1st Edition")
47+
.pages(25)
48+
.build();
49+
50+
CreateMediaItemRequest createRequest = CreateMediaItemRequest.builder()
51+
.item(newItem)
52+
.build();
53+
54+
library.add(createRequest.getItem());
55+
56+
return MediaItemResponse.from(createRequest.getItem());
57+
}
58+
59+
@GetMapping("/items/:{id}")
60+
public GetMediaItemsResponse getItemById(@PathVariable("id") String id) {
61+
Set<MediaItem> item = library.search(SearchCriteria.builder().id(id).build());
62+
MediaItemResponse responseItemById = item.stream().map(MediaItemResponse::from).toList().findFirst().orElseThrow();
63+
var response = GetMediaItemsResponse.builder().item(responseItemById).build();
64+
return response;
65+
}
66+
67+
@DeleteMapping("/items/:{id}")
68+
public MediaItemResponse deleteItemById(@PathVariable("id") String id) {
69+
Set<MediaItem> itemToDelete = library.search(SearchCriteria.builder().id(id).build());
70+
//MediaItemRequest deleteItem = CreateMediaItemRequest.builder().build();
71+
CreateMediaItemRequest createDeleteRequest = CreateMediaItemRequest.builder().deleteItem(itemToDelete).build();
72+
73+
library.delete(createDeleteRequest.getItem());
74+
75+
return MediaItemResponse.from(createDeleteRequest.getItem());
76+
}
3277
}

0 commit comments

Comments
 (0)