diff --git a/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java b/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java index 3387bfd978c6326b564e77afc311c4bf6c6b45e3..58c26020662dce606b6e909ac94d24147f3cdb22 100644 --- a/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java +++ b/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java @@ -4,6 +4,7 @@ import com.ajou.prcoding.myweb.dto.FavoriteMusicRequestDto; import com.ajou.prcoding.myweb.dto.MusicList; import com.ajou.prcoding.myweb.entity.FavoriteMusic; import com.ajou.prcoding.myweb.repository.FavoriteRepository; +import com.ajou.prcoding.myweb.service.MusicService; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -16,62 +17,27 @@ import java.util.List; @RestController public class MyWebController { - RestTemplate restTemplate = new RestTemplate(); + @Autowired + MusicService service; - @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/{name}") + public MusicList musicSearchByPath(@PathVariable String name){ + return service.searchMusic(name); } @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; - } + public MusicList musicSearchByParam(@RequestParam(value="term") String name){ + return service.searchMusic(name); } - @Autowired - FavoriteRepository albumsRepo; - - @GetMapping(value="/likes") + @GetMapping(value="/likes") //Get Favorite Music list from Database public List<FavoriteMusic> getLikes() { - try{ - return albumsRepo.findAll(); - } - catch(Exception e){ - System.out.println(e.toString()); - return null; - } + return service.getLikes(); } @PostMapping(value="/likes") - @Transactional public int postLikes(@RequestBody FavoriteMusicRequestDto favorite){ - FavoriteMusic music = albumsRepo.save(favorite.toEntity()); - if(music != null) { - return 1; - } - else { - return 0; - } + return service.saveFavorite(favorite); } } diff --git a/src/main/java/com/ajou/prcoding/myweb/entity/FavoriteMusic.java b/src/main/java/com/ajou/prcoding/myweb/entity/FavoriteMusic.java index 1d24a1131868f13feb66a2610d2cbc65e5d8f0e8..90529c6b5fd1983d9dbd48684650fb7701c57eab 100644 --- a/src/main/java/com/ajou/prcoding/myweb/entity/FavoriteMusic.java +++ b/src/main/java/com/ajou/prcoding/myweb/entity/FavoriteMusic.java @@ -15,8 +15,7 @@ import javax.persistence.Table; @Setter @ToString public class FavoriteMusic { - @Id - @Column(length=32) private String collectionId; + @Id @Column(length=32) private String collectionId; @Column private String collectionType; @Column private String artistId; @Column private String artistName; diff --git a/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java b/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java new file mode 100644 index 0000000000000000000000000000000000000000..1beaae5143b2f3bead870153532b823e5bee2c88 --- /dev/null +++ b/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java @@ -0,0 +1,57 @@ +package com.ajou.prcoding.myweb.service; + +import com.ajou.prcoding.myweb.dto.FavoriteMusicRequestDto; +import com.ajou.prcoding.myweb.dto.MusicList; +import com.ajou.prcoding.myweb.entity.FavoriteMusic; +import com.ajou.prcoding.myweb.repository.FavoriteRepository; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.client.RestTemplate; + +import javax.transaction.Transactional; +import java.io.IOException; +import java.util.List; + +@Service +@Transactional +@RequiredArgsConstructor +public class MusicService { + private final FavoriteRepository albumsRepo; + RestTemplate restTemplate = new RestTemplate(); + + public MusicList searchMusic(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; + } + } + + public List<FavoriteMusic> getLikes(){ + try{ + return albumsRepo.findAll(); + } + catch(Exception e){ + System.out.println(e.toString()); + return null; + } + } + + public int saveFavorite(@RequestBody FavoriteMusicRequestDto favorite){ + FavoriteMusic music = albumsRepo.save(favorite.toEntity()); + if(music != null) { + return 1; + } + else { + return 0; + } + } +}