Skip to content

Commit 90a841d

Browse files
committed
feat: adds deleteItem method
1 parent a753265 commit 90a841d

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import org.springframework.http.ResponseEntity;
99
import org.springframework.web.bind.annotation.CrossOrigin;
10+
import org.springframework.web.bind.annotation.DeleteMapping;
1011
import org.springframework.web.bind.annotation.GetMapping;
1112
import org.springframework.web.bind.annotation.PathVariable;
1213
import org.springframework.web.bind.annotation.PostMapping;
@@ -15,6 +16,7 @@
1516
import com.codedifferently.lesson26.library.Librarian;
1617
import com.codedifferently.lesson26.library.Library;
1718
import com.codedifferently.lesson26.library.MediaItem;
19+
import com.codedifferently.lesson26.library.exceptions.MediaItemCheckedOutException;
1820
import com.codedifferently.lesson26.library.search.SearchCriteria;
1921

2022
import io.swagger.v3.oas.annotations.parameters.RequestBody;
@@ -62,4 +64,22 @@ public ResponseEntity<CreateMediaItemResponse> postItem(@RequestBody CreateMedia
6264

6365
return ResponseEntity.ok(response);
6466
}
67+
68+
@DeleteMapping("/items/{id}")
69+
public ResponseEntity<Void> deleteItem(@PathVariable("id") UUID id) {
70+
Set<MediaItem> items = library.search(SearchCriteria.builder().id(id.toString()).build());
71+
72+
if (items.isEmpty()) {
73+
return ResponseEntity.notFound().build();
74+
}
75+
76+
MediaItem itemToDelete = items.iterator().next();
77+
78+
try {
79+
library.removeMediaItem(itemToDelete, librarian);
80+
return ResponseEntity.noContent().build();
81+
} catch (MediaItemCheckedOutException e) {
82+
return ResponseEntity.badRequest().build();
83+
}
84+
}
6585
}

0 commit comments

Comments
 (0)