diff --git a/src/main/java/kr/ajousw/myspringweb/controller/MyWebcontroller.java b/src/main/java/kr/ajousw/myspringweb/controller/MyWebcontroller.java index 0bad73368b369205520186f77cdf81b04e00a643..2a2058278ac1c035928339d56944dd9e5890f989 100644 --- a/src/main/java/kr/ajousw/myspringweb/controller/MyWebcontroller.java +++ b/src/main/java/kr/ajousw/myspringweb/controller/MyWebcontroller.java @@ -1,10 +1,10 @@ package kr.ajousw.myspringweb.controller; -import java.io.IOException; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -13,8 +13,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; -import com.fasterxml.jackson.databind.ObjectMapper; - import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto; import kr.ajousw.myspringweb.dto.MusicList; import kr.ajousw.myspringweb.entity.FavoriteMusic; @@ -27,69 +25,33 @@ public class MyWebcontroller { @Autowired FavoriteRepository albumsRepo; - @Autowired + @Autowired MusicService service; - @GetMapping(value = "/musicSearch/{name}") - public MusicList musicSearchByPath(@PathVariable String name){ + public MusicList musicSearchByPath(@PathVariable String name) { return service.searchMusic(name); } - @GetMapping(value="/musicSearch") - public MusicList musicSearchByParam(@RequestParam(value="term") String name) { + @GetMapping(value = "/musicSearch") + public MusicList musicSearchByParam(@RequestParam(value = "term") String name) { return service.searchMusic(name); } - // @GetMapping(value = "/musicSearch/{term}") - // public MusicList musicSearchByPath(@PathVariable String term) { - // try { - // String url = "https://itunes.apple.com/search?term="+ term +"&entity=album"; - // String response = restTemplate.getForObject(url, String.class); - // ObjectMapper mapper = new ObjectMapper(); - // MusicList list = mapper.readValue(response, MusicList.class); - // System.out.println(list.getResultCount()); - // return list; - // } catch(IOException e) { - // System.out.println(e.toString()); - // return null; - // } - // } - - // @GetMapping(value = "/musicSearch") - // public MusicList musicSearchByParam(@RequestParam String term) { - // try { - // String url = "https://itunes.apple.com/search?term="+ term +"&entity=album"; - // String response = restTemplate.getForObject(url, String.class); - // ObjectMapper mapper = new ObjectMapper(); - // MusicList list = mapper.readValue(response, MusicList.class); - // System.out.println(list.getResultCount()); - // return list; - // } catch(IOException e) { - // System.out.println(e.toString()); - // return null; - // } - // } + @GetMapping(value="/likes") //Get Favorite Music list from Database + public List<FavoriteMusic> getLikes() { + return service.getLikes(); + } + + @PostMapping(value="/likes") + public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) { + return service.saveFavorite(favorite); + } - // @GetMapping(value = "/likes") - // public List<FavoriteMusic> getLikes() { - // try { - // return albumsRepo.findAll(); - // } catch (Exception e) { - // System.out.println(e.toString()); - // return null; - // } - // } + @DeleteMapping(value = "/likes/{id}") + public String deleteFavorite(@PathVariable String id) { + service.deleteFavorite(id); + return (id + " was deleted."); + } - // @PostMapping(value = "/likes") - // @Transactional - // public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) { - // FavoriteMusic music = albumsRepo.save(favorite.toEntity()); - // if(music != null) { - // return 1; - // } else { - // return 0; - // } - // } } - diff --git a/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java b/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java index b37255d16a798e6ce5c0255df4eed8a118b6a61a..ef6ecdd67d2fb6ea98a063d8c68e5f36e359a9c8 100644 --- a/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java +++ b/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java @@ -1,6 +1,5 @@ package kr.ajousw.myspringweb.dto; -import jakarta.persistence.Column; import kr.ajousw.myspringweb.entity.FavoriteMusic; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/kr/ajousw/myspringweb/repository/FavoriteRepository.java b/src/main/java/kr/ajousw/myspringweb/repository/FavoriteRepository.java index 1c911c48463575f0d5607150c5fd5039a9c62286..3cf9f1364264d46ddb794b2ea786016fba73a834 100644 --- a/src/main/java/kr/ajousw/myspringweb/repository/FavoriteRepository.java +++ b/src/main/java/kr/ajousw/myspringweb/repository/FavoriteRepository.java @@ -6,5 +6,7 @@ import kr.ajousw.myspringweb.entity.FavoriteMusic; public interface FavoriteRepository extends JpaRepository<FavoriteMusic, String> { List<FavoriteMusic> findAll(); + + void deleteById(String id); } diff --git a/src/main/java/kr/ajousw/myspringweb/service/MusicService.java b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java index dca08dafc35464b28e042f48fb9823af308557fc..1e6626fa4b57fa428d03e462edef00f4835694dd 100644 --- a/src/main/java/kr/ajousw/myspringweb/service/MusicService.java +++ b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java @@ -2,11 +2,10 @@ package kr.ajousw.myspringweb.service; import java.io.IOException; import java.util.List; +import java.util.Optional; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.databind.ObjectMapper; @@ -36,23 +35,8 @@ public class MusicService { return null; } - } - - // public MusicList musicSearchByParam(@RequestParam(value = "term") String name) { - // try { - // String url = "https://itunes.apple.com/search?term="+ name +"&entity=album"; - // String response = restTemplate.getForObject(url, String.class); - // ObjectMapper mapper = new ObjectMapper(); - // MusicList list = mapper.readValue(response, MusicList.class); - // System.out.println(list.getResultCount()); - // return list; - // } catch(IOException e) { - // System.out.println(e.toString()); - // return null; - // } - // } + } - public List<FavoriteMusic> getLikes() { try { return albumsRepo.findAll(); @@ -61,6 +45,7 @@ public class MusicService { return null; } } + public int saveFavorite(FavoriteMusicRequestDto favorite) { FavoriteMusic music = albumsRepo.save(favorite.toEntity()); if(music != null) { @@ -71,4 +56,16 @@ public class MusicService { } + public void deleteFavorite(String id) { + try { + Optional<FavoriteMusic> favoriteMusicOptional = albumsRepo.findById(id); + if (favoriteMusicOptional.isPresent()) { + albumsRepo.deleteById(id); + } else { + throw new IllegalArgumentException("Invalid id: " + id); + } + } catch (Exception e) { + System.out.println(e.toString()); + } + } }