diff --git a/src/main/java/kr/ajou/prcoding/mySpringWeb/controller/MyWebController.java b/src/main/java/kr/ajou/prcoding/mySpringWeb/controller/MyWebController.java index 60035a0d9111591919350158089db0c1193e2ef2..e1f6ca91d8e534ab841058fa108fc8ae17337e13 100644 --- a/src/main/java/kr/ajou/prcoding/mySpringWeb/controller/MyWebController.java +++ b/src/main/java/kr/ajou/prcoding/mySpringWeb/controller/MyWebController.java @@ -6,63 +6,44 @@ import java.util.List; import org.springframework.beans.factory.annotation.Autowired; 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.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.transaction.Transactional; +import kr.ajou.prcoding.mySpringWeb.dto.FavoriteMusicRequestDto; import kr.ajou.prcoding.mySpringWeb.dto.MusicList; import kr.ajou.prcoding.mySpringWeb.entity.FavoriteMusic; import kr.ajou.prcoding.mySpringWeb.repository.FavoriteRepository; +import kr.ajou.prcoding.mySpringWeb.service.MusicService; @RestController public class MyWebController { - RestTemplate restTemplate = new RestTemplate(); - private String url = "http://itunes.apple.com"; // ?term=${searchWord}&entity=album + @Autowired - FavoriteRepository albumsRepo; + MusicService service; - @GetMapping(value = "/musicSearch/{term}") - public MusicList musicSearchByPath(@PathVariable String term) { // String이 리턴 타입 이었음. - try { - url = url + String.format("/search?term=%s&entity=album", term); - 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/{name}") + public MusicList musicSearchByPath(@PathVariable String name) { // String이 리턴 타입 이었음. + return service.serachMusic(name); } - @GetMapping(value = "/musicSearch") - public MusicList musicSearchByParam(@RequestParam(value = "term") String name) { - try { - url = url + String.format("/search?term=%s&entity=album", name); - 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(value = "term") String name) { + return service.serachMusic(name); } // Get Favorite Music list from Database @GetMapping(value = "/likes") public List<FavoriteMusic> getLikes() { - try { - return albumsRepo.findAll(); - - } catch (Exception e) { - System.out.println(e.toString()); - return null; - } + return service.getLikes(); } - - + @PostMapping(value = "/likes") + public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) { + return service.saveFavorite(favorite); + } } diff --git a/src/main/java/kr/ajou/prcoding/mySpringWeb/dto/FavoriteMusicRequestDto.java b/src/main/java/kr/ajou/prcoding/mySpringWeb/dto/FavoriteMusicRequestDto.java new file mode 100644 index 0000000000000000000000000000000000000000..4541e5a28f4d62875e5d29f90e8215dde8056528 --- /dev/null +++ b/src/main/java/kr/ajou/prcoding/mySpringWeb/dto/FavoriteMusicRequestDto.java @@ -0,0 +1,31 @@ +package kr.ajou.prcoding.mySpringWeb.dto; + +import kr.ajou.prcoding.mySpringWeb.entity.FavoriteMusic; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@ToString +public class FavoriteMusicRequestDto { + private String collectionId; + private String collectionType; + private String artistId; + private String artistName; + private String artistViewUrl; + private String collectionName; + private String collectionViewUrl; + + public FavoriteMusic toEntity() { + FavoriteMusic music = new FavoriteMusic(); + music.setCollectionId(this.collectionId); + music.setCollectionType(this.collectionType); + music.setArtistId(this.artistId); + music.setArtistName(this.artistName); + music.setArtistViewUrl(this.artistViewUrl); + music.setCollectionName(this.collectionName); + music.setCollectionViewUrl(this.collectionViewUrl); + return music; + } +} diff --git a/src/main/java/kr/ajou/prcoding/mySpringWeb/service/MusicService.java b/src/main/java/kr/ajou/prcoding/mySpringWeb/service/MusicService.java new file mode 100644 index 0000000000000000000000000000000000000000..e2db1a18cebb2e52cd85daa04fe1456665d4b8ca --- /dev/null +++ b/src/main/java/kr/ajou/prcoding/mySpringWeb/service/MusicService.java @@ -0,0 +1,56 @@ +package kr.ajou.prcoding.mySpringWeb.service; + +import java.io.IOException; +import java.util.List; + +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.transaction.Transactional; +import kr.ajou.prcoding.mySpringWeb.dto.FavoriteMusicRequestDto; +import kr.ajou.prcoding.mySpringWeb.dto.MusicList; +import kr.ajou.prcoding.mySpringWeb.entity.FavoriteMusic; +import kr.ajou.prcoding.mySpringWeb.repository.FavoriteRepository; +import lombok.RequiredArgsConstructor; + +@Service +@Transactional +@RequiredArgsConstructor +public class MusicService { + private final FavoriteRepository albumsRepo; + RestTemplate restTemplate = new RestTemplate(); + private final String itunesUrl = "http://itunes.apple.com"; // ?term=${searchWord}&entity=album + + public MusicList serachMusic(String musicName){ + try { + String url = itunesUrl + String.format("/search?term=%s&entity=album", musicName); + 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(); + } catch (Exception e){ + System.out.println(e.toString()); + return null; + } + } + + public int saveFavorite(FavoriteMusicRequestDto favorite){ + FavoriteMusic music = albumsRepo.save(favorite.toEntity()); + if (music != null) { + return 1; + } else { + return 0; + } + } +}