Skip to content
Snippets Groups Projects
Commit 40504e43 authored by 김준하's avatar 김준하
Browse files

code refactoring with service

parent 5bfd1608
No related branches found
No related tags found
1 merge request!5code refactoring with service
...@@ -4,6 +4,7 @@ import com.ajou.prcoding.myweb.dto.FavoriteMusicRequestDto; ...@@ -4,6 +4,7 @@ import com.ajou.prcoding.myweb.dto.FavoriteMusicRequestDto;
import com.ajou.prcoding.myweb.dto.MusicList; import com.ajou.prcoding.myweb.dto.MusicList;
import com.ajou.prcoding.myweb.entity.FavoriteMusic; import com.ajou.prcoding.myweb.entity.FavoriteMusic;
import com.ajou.prcoding.myweb.repository.FavoriteRepository; import com.ajou.prcoding.myweb.repository.FavoriteRepository;
import com.ajou.prcoding.myweb.service.MusicService;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -16,62 +17,27 @@ import java.util.List; ...@@ -16,62 +17,27 @@ import java.util.List;
@RestController @RestController
public class MyWebController { public class MyWebController {
RestTemplate restTemplate = new RestTemplate(); @Autowired
MusicService service;
@GetMapping(value="/musicSearch/{term}") @GetMapping(value="/musicSearch/{name}")
public MusicList musicSearchByPath(@PathVariable String term){ public MusicList musicSearchByPath(@PathVariable String name){
try { return service.searchMusic(name);
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") @GetMapping(value="/musicSearch")
public MusicList musicSearchByParam(@RequestParam String term){ public MusicList musicSearchByParam(@RequestParam(value="term") String name){
try { return service.searchMusic(name);
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;
}
} }
@Autowired @GetMapping(value="/likes") //Get Favorite Music list from Database
FavoriteRepository albumsRepo;
@GetMapping(value="/likes")
public List<FavoriteMusic> getLikes() { public List<FavoriteMusic> getLikes() {
try{ return service.getLikes();
return albumsRepo.findAll();
}
catch(Exception e){
System.out.println(e.toString());
return null;
}
} }
@PostMapping(value="/likes") @PostMapping(value="/likes")
@Transactional
public int postLikes(@RequestBody FavoriteMusicRequestDto favorite){ public int postLikes(@RequestBody FavoriteMusicRequestDto favorite){
FavoriteMusic music = albumsRepo.save(favorite.toEntity()); return service.saveFavorite(favorite);
if(music != null) {
return 1;
}
else {
return 0;
}
} }
} }
...@@ -15,8 +15,7 @@ import javax.persistence.Table; ...@@ -15,8 +15,7 @@ import javax.persistence.Table;
@Setter @Setter
@ToString @ToString
public class FavoriteMusic { public class FavoriteMusic {
@Id @Id @Column(length=32) private String collectionId;
@Column(length=32) private String collectionId;
@Column private String collectionType; @Column private String collectionType;
@Column private String artistId; @Column private String artistId;
@Column private String artistName; @Column private String artistName;
......
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;
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment