Skip to content

Fix: Lesson 26 working on debugging file" #613

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 31 commits into from
Closed
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
fc92fbb
feat:mbLesson_09
Mar 25, 2025
e42056b
Merge branch 'code-differently:main' into main
Tezz03 Mar 26, 2025
d7ca3b3
Merge branch 'code-differently:main' into main
Tezz03 Mar 27, 2025
42cbca7
Merge branch 'code-differently:main' into main
Tezz03 Mar 28, 2025
c57408a
Delete lesson_09/types/types_app/src/main/java/com/codedifferently/le…
Tezz03 Mar 28, 2025
af8eef3
Delete lesson_09/types/types_app/src/main/resources/data/montezb.json
Tezz03 Mar 28, 2025
7b24560
Merge branch 'code-differently:main' into main
Tezz03 Mar 29, 2025
d3239c0
Merge branch 'code-differently:main' into main
Tezz03 Mar 31, 2025
41cb92f
Merge branch 'code-differently:main' into main
Tezz03 Apr 2, 2025
70d28f7
Merge branch 'code-differently:main' into main
Tezz03 Apr 3, 2025
1dde77b
Merge branch 'code-differently:main' into main
Tezz03 Apr 5, 2025
74fb0ca
Merge branch 'code-differently:main' into main
Tezz03 Apr 7, 2025
957c931
Merge branch 'code-differently:main' into main
Tezz03 Apr 10, 2025
636c494
Merge branch 'code-differently:main' into main
Tezz03 Apr 11, 2025
f76c59d
Merge branch 'code-differently:main' into main
Tezz03 Apr 13, 2025
866bf95
Merge branch 'code-differently:main' into main
Tezz03 Apr 22, 2025
e9ec7d5
Merge branch 'code-differently:main' into main
Tezz03 Apr 23, 2025
11e1d77
Merge branch 'code-differently:main' into main
Tezz03 Apr 25, 2025
8d59126
Merge branch 'code-differently:main' into main
Tezz03 Apr 25, 2025
9c8ec28
Merge branch 'code-differently:main' into main
Tezz03 Apr 29, 2025
479ba34
Merge branch 'code-differently:main' into main
Tezz03 May 1, 2025
014ce03
Merge branch 'code-differently:main' into main
Tezz03 May 3, 2025
08ca8be
Merge branch 'code-differently:main' into main
Tezz03 May 5, 2025
fc73f23
fix: fix debug in mediaitemsController
Tezz03 May 5, 2025
acd7b1b
fix to right branch
Tezz03 May 5, 2025
e7b585b
fix:MediaItemsController- still in works
Tezz03 May 12, 2025
705db5b
chore: revert changes to gradle files
VicenteVigueras May 21, 2025
dda9d7b
chore: revert changes to gradlew
VicenteVigueras May 21, 2025
2b7be6f
chore: remove methods that were autogenerated
VicenteVigueras May 21, 2025
5e4a5e0
chore: revert autogenerated methods
VicenteVigueras May 21, 2025
d8a17ea
chore: update MediaItemsController so that it can compile
VicenteVigueras May 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,19 +1,34 @@
package com.codedifferently.lesson26.web;

import com.codedifferently.lesson26.library.Librarian;
import com.codedifferently.lesson26.library.Library;
import com.codedifferently.lesson26.library.MediaItem;
import com.codedifferently.lesson26.library.search.SearchCriteria;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;

import org.springframework.http.ResponseEntity;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.codedifferently.lesson26.library.Librarian;
import com.codedifferently.lesson26.library.Library;
import com.codedifferently.lesson26.library.MediaItem;
import com.codedifferently.lesson26.library.search.SearchCriteria;

import jakarta.validation.Valid;

@RestController
@CrossOrigin
@RequestMapping("/api")
public class MediaItemsController {

private final Library library;
Expand All @@ -31,4 +46,53 @@ public ResponseEntity<GetMediaItemsResponse> getItems() {
var response = GetMediaItemsResponse.builder().items(responseItems).build();
return ResponseEntity.ok(response);
}

@GetMapping("/items/{id}")
public ResponseEntity<MediaItemResponse> getItemById(@PathVariable String id) {
try {
Set<MediaItem> items = library.search((SearchCriteria.builder().id(id).build()));
if (items.isEmpty()) {
return ResponseEntity.notFound().build();
}
MediaItemResponse response = MediaItemResponse.from(items.iterator().next());
return ResponseEntity.ok(response);
} catch (IllegalArgumentException e) {
return ResponseEntity.notFound().build();
}
}

@PostMapping("/items")
public ResponseEntity<Object> createItem(@Valid @RequestBody CreateMediaItemRequest request) {
try {
MediaItem item = MediaItemRequest.asMediaItem(request.getItem());
library.addMediaItem(item, librarian);
var response = (CreateMediaItemResponse.builder()).item(MediaItemResponse.from(item)).build();
return ResponseEntity.ok(response);
} catch (IllegalArgumentException e) {
return ResponseEntity.badRequest().build();
}
}

@DeleteMapping("/items/{id}")
public ResponseEntity<Void> deleteItemById(@PathVariable("id") String id) {
try {
UUID uuid = UUID.fromString(id);
Set<MediaItem> items = library.search(SearchCriteria.builder().id(id).build());
if (items.isEmpty()) {
return ResponseEntity.notFound().build();
}
library.removeMediaItem(uuid, librarian);
return ResponseEntity.noContent().build();
} catch (IllegalArgumentException e) {
return ResponseEntity.notFound().build();
}
}

@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<Map<String, List<String>>> handleValidationErrors(
MethodArgumentNotValidException ex) {
List<String> errors =
ex.getBindingResult().getFieldErrors().stream().map(FieldError::getDefaultMessage).toList();
return ResponseEntity.badRequest().body(Map.of("errors", errors));
}
}
Loading