diff --git a/src/main/java/com/ajou/procoding/myweb/controller/MyWebController.java b/src/main/java/com/ajou/procoding/myweb/controller/MyWebController.java index 4d60be3d3c4ce56da4b71c0c984b7b145db00035..f7eb4cac1cfdefb21568c438de53bdb212165b92 100644 --- a/src/main/java/com/ajou/procoding/myweb/controller/MyWebController.java +++ b/src/main/java/com/ajou/procoding/myweb/controller/MyWebController.java @@ -1,89 +1,54 @@ package com.ajou.procoding.myweb.controller; -import java.io.IOException; -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.ajou.procoding.myweb.dto.FavoriteMusicRequestDto; import com.ajou.procoding.myweb.dto.MusicList; -import com.ajou.procoding.myweb.entitiy.FavoriteMusic; +import com.ajou.procoding.myweb.entity.FavoriteMusic; import com.ajou.procoding.myweb.repository.FavoriteRepository; +import com.ajou.procoding.myweb.service.MusicService; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.transaction.Transactional; -@RestController - -public class MyWebController { - - @GetMapping(value="/musicSearch/{term}") - public MusicList musicSearchByPath(@PathVariable String term) { - RestTemplate restTemplate = new RestTemplate(); - String url = String.format("https://itunes.apple.com/search?term=%s&entity=album", term); - try { - 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; - } - } - +import java.io.IOException; +import java.util.List; - @GetMapping(value="/musicSearch") - public MusicList musicSearchByParam(@RequestParam String term) { - RestTemplate restTemplate = new RestTemplate(); - String url = String.format("https://itunes.apple.com/search?term=%s&entity=album", term); - try { - 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; - }} +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; - @Autowired - FavoriteRepository albumsRepo; +@RestController +public class MyWebController { - @GetMapping(value="/likes") - public List<FavoriteMusic> getLikes() { + @Autowired + MusicService service; - try { - return albumsRepo.findAll(); + @GetMapping(value = "/musicSearch/{name}") + public MusicList musicSearchByPath(@PathVariable String name) { + return service.searchMusic(name); + } - } catch (Exception e) { - System.out.println(e.toString()); - return null; - } + @GetMapping(value = "/musicSearch") + public MusicList musicSearchByParam(@RequestParam(value = "term") String name) { + return service.searchMusic(name); + } + @GetMapping(value="/likes") //Get Favorite Music list from Database + public List<FavoriteMusic> getLikes() { + 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/procoding/myweb/dto/FavoriteMusicRequestDto.java b/src/main/java/com/ajou/procoding/myweb/dto/FavoriteMusicRequestDto.java index 73df8bcac3bb6ee293fa8092bab338e4c0901369..79ae88f203c8eb9a06570c95c1b8949596c0496a 100644 --- a/src/main/java/com/ajou/procoding/myweb/dto/FavoriteMusicRequestDto.java +++ b/src/main/java/com/ajou/procoding/myweb/dto/FavoriteMusicRequestDto.java @@ -1,6 +1,6 @@ package com.ajou.procoding.myweb.dto; -import com.ajou.procoding.myweb.entitiy.FavoriteMusic; +import com.ajou.procoding.myweb.entity.FavoriteMusic; import jakarta.persistence.Column; import lombok.Getter; @@ -22,12 +22,13 @@ public class FavoriteMusicRequestDto { public FavoriteMusic toEntity() { FavoriteMusic music = new FavoriteMusic(); music.setCollectionId(this.collectionId); - music.setCollectionId(this.collectionType); - music.setCollectionId(this.artistId); - music.setCollectionId(this.artistName); - music.setCollectionId(this.artistViewUrl); - music.setCollectionId(this.collectionName); - music.setCollectionId(this.collectionViewUrl); + music.setCollectionType(this.collectionType); + music.setArtistId(this.artistId); + music.setArtistName(this.artistName); + music.setCollectionName(this.collectionName); + music.setArtistViewUrl(this.artistViewUrl); + music.setCollectionViewUrl(this.collectionViewUrl); + return music; } diff --git a/src/main/java/com/ajou/procoding/myweb/entitiy/FavoriteMusic.java b/src/main/java/com/ajou/procoding/myweb/entity/FavoriteMusic.java similarity index 93% rename from src/main/java/com/ajou/procoding/myweb/entitiy/FavoriteMusic.java rename to src/main/java/com/ajou/procoding/myweb/entity/FavoriteMusic.java index eb5a28ad8d30e4113fce362bbc36c727ddfe7add..5c5167fc2d30f8dd56cc21eb7823922abb27d598 100644 --- a/src/main/java/com/ajou/procoding/myweb/entitiy/FavoriteMusic.java +++ b/src/main/java/com/ajou/procoding/myweb/entity/FavoriteMusic.java @@ -1,4 +1,4 @@ -package com.ajou.procoding.myweb.entitiy; +package com.ajou.procoding.myweb.entity; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/src/main/java/com/ajou/procoding/myweb/repository/FavoriteRepository.java b/src/main/java/com/ajou/procoding/myweb/repository/FavoriteRepository.java index 04fac828bda32125d4fea8fdf008188c58338f19..4e9f4a8897b63b04fea72e2f610bf2ab2198eb75 100644 --- a/src/main/java/com/ajou/procoding/myweb/repository/FavoriteRepository.java +++ b/src/main/java/com/ajou/procoding/myweb/repository/FavoriteRepository.java @@ -4,7 +4,7 @@ import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; -import com.ajou.procoding.myweb.entitiy.FavoriteMusic; +import com.ajou.procoding.myweb.entity.FavoriteMusic; public interface FavoriteRepository extends JpaRepository<FavoriteMusic, String> { diff --git a/src/main/java/com/ajou/procoding/myweb/service/MusicService.java b/src/main/java/com/ajou/procoding/myweb/service/MusicService.java new file mode 100644 index 0000000000000000000000000000000000000000..ef2e6cf35350c9c3f9e6e9ad11fa8ee0e35db63d --- /dev/null +++ b/src/main/java/com/ajou/procoding/myweb/service/MusicService.java @@ -0,0 +1,48 @@ +package com.ajou.procoding.myweb.service; + +import java.io.IOException; +import java.util.List; + +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import com.ajou.procoding.myweb.dto.FavoriteMusicRequestDto; +import com.ajou.procoding.myweb.dto.MusicList; +import com.ajou.procoding.myweb.entity.FavoriteMusic; +import com.ajou.procoding.myweb.repository.FavoriteRepository; +import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; + +@Service +@Transactional +@RequiredArgsConstructor +public class MusicService { + private final FavoriteRepository albumsRepo; + RestTemplate restTemplate = new RestTemplate(); + + public MusicList searchMusic(String name) { + String url = String.format("https://itunes.apple.com/search?term=%s&entity=album", name); + + try { + 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() { + return albumsRepo.findAll(); + } + + public int saveFavorite(FavoriteMusicRequestDto favorite) { + FavoriteMusic music = albumsRepo.save(favorite.toEntity()); + return music != null ? 1 : 0; + } +} \ No newline at end of file