Skip to content
Snippets Groups Projects
Select Git revision
  • 7f68060b294ba2348b5c2d6c0b4360832fd98463
  • main default protected
2 results

MusicService.java

Blame
  • MusicService.java 1.80 KiB
    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;
        private final RestTemplate restTemplate = new RestTemplate();
    
    
        //iTunes API를 호출해 앨범 검색 결과(MusicList) 반환 
        public MusicList searchMusic(String name) {
            try {
                String url = String.format("https://itunes.apple.com/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("ResultCount: " + list.getResultCount());
                return list;
            } catch (IOException e) {
                System.out.println(e.toString());
                return null;
            }
        }
    
        
        //DB에서 FavoriteMusic 목록을 조회 
        public List<FavoriteMusic> getLikes() {
            return albumsRepo.findAll();
        }
    
        
         //즐겨찾기 등록
         //DTO -> 엔티티 변환 후 DB에 저장, 성공 시 1, 실패 시 0 반환
        public int saveFavorite(FavoriteMusicRequestDto favorite) {
            FavoriteMusic music = albumsRepo.save(favorite.toEntity());
            return (music != null) ? 1 : 0;
        }
    }