Skip to content
Snippets Groups Projects
Commit 1d2c52c9 authored by HyunjinNoh's avatar HyunjinNoh
Browse files

code refactoring with service

parent 46d11e0c
No related branches found
No related tags found
No related merge requests found
Pipeline #8350 failed
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.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 kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto;
import kr.ajousw.myspringweb.dto.MusicList;
import kr.ajousw.myspringweb.entity.FavoriteMusic;
import kr.ajousw.myspringweb.repository.FavoriteRepository;
import kr.ajousw.myspringweb.service.MusicService;
@RestController
public class MyWebController {
@Autowired
FavoriteRepository albumsRepo;
MusicService service;
@GetMapping(value="/musicSearch/{term}")
public String musicSearch(@PathVariable String term) {
RestTemplate restTemplate = new RestTemplate();
String url = "https://itunes.apple.com/search?term=" + term + "&entity=album";
try {
String res = restTemplate.getForObject(url, String.class);
ObjectMapper mapper = new ObjectMapper();
MusicList list = mapper.readValue(res, MusicList.class);
String ret = mapper.writeValueAsString(list);
return ret;
} catch(IOException e) {
System.out.println(e.toString());
public MusicList musicSearchByPath(@PathVariable String term) {
return service.musicSearch(term);
}
return "{\"resultCount\":0, \"results\":[]}";
@GetMapping(value="/musicSearch")
public MusicList musicSearchByParam(@RequestParam(value="term") String term) {
return service.musicSearch(term);
}
//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")
@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.toEntity());
}
}
\ No newline at end of file
package kr.ajousw.myspringweb.service;
import java.io.IOException;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import com.fasterxml.jackson.databind.ObjectMapper;
import kr.ajousw.myspringweb.dto.MusicList;
import kr.ajousw.myspringweb.entity.FavoriteMusic;
import kr.ajousw.myspringweb.repository.FavoriteRepository;
import lombok.RequiredArgsConstructor;
@Service
@Transactional
@RequiredArgsConstructor
public class MusicService {
private final FavoriteRepository albumsRepo;
RestTemplate restTemplate = new RestTemplate();
public MusicList musicSearch(String term){
RestTemplate restTemplate = new RestTemplate();
String url = "https://itunes.apple.com/search?term=" + term + "&entity=album";
try {
String res = restTemplate.getForObject(url, String.class);
ObjectMapper mapper = new ObjectMapper();
MusicList list = mapper.readValue(res, MusicList.class);
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(FavoriteMusic favoriteMusic){
FavoriteMusic music = albumsRepo.save(favoriteMusic);
return music != null ? 1 : 0;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment