diff --git a/src/main/java/com/ajou/prcoding/myweb/Controller/myWebController.java b/src/main/java/com/ajou/prcoding/myweb/Controller/myWebController.java new file mode 100644 index 0000000000000000000000000000000000000000..4704f617b023c8d5f87bca0badd8e9745323b536 --- /dev/null +++ b/src/main/java/com/ajou/prcoding/myweb/Controller/myWebController.java @@ -0,0 +1,45 @@ +package com.ajou.prcoding.myweb.Controller; +import com.ajou.prcoding.myweb.Entity.FavoriteMusic; +import com.ajou.prcoding.myweb.dto.FavoriteMusicRequestDto; +import com.ajou.prcoding.myweb.dto.MusicList; +import com.ajou.prcoding.myweb.service.MusicService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +public class myWebController{ + + @Autowired + MusicService service; + + @GetMapping(value="/musicSearch/{name}") + public MusicList musicSearchByPath(@PathVariable String name) { + return service.searchMusic(name); + } + + @GetMapping(value="/musicSearch") + public MusicList musicSearchByParam(@RequestParam String term) + { + return service.searchMusic(term); + } + + @GetMapping(value = "/likes") + public List<FavoriteMusic> getLikes() { + return service.getLikes(); + } + + @PostMapping(value = "/likes") + public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) + { + return service.saveFavorite(favorite); + } + + @DeleteMapping(value = "/likes/{id}") + public int deleteLikes(@PathVariable String id){ + return service.deleteFavorite(id); + } + + +} diff --git a/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java b/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java similarity index 55% rename from src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java rename to src/main/java/com/ajou/prcoding/myweb/service/MusicService.java index 3fd798ab69c09ff353f3af839a8aa7d3d85cd355..f157508abf1fb1334a95cce5f00ad5a470e121c5 100644 --- a/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java +++ b/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java @@ -1,11 +1,13 @@ -package com.ajou.prcoding.myweb.Controller; +package com.ajou.prcoding.myweb.service; + import com.ajou.prcoding.myweb.Entity.FavoriteMusic; import com.ajou.prcoding.myweb.dto.FavoriteMusicRequestDto; import com.ajou.prcoding.myweb.dto.MusicList; import com.ajou.prcoding.myweb.repository.FavoriteRepository; import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; @@ -13,56 +15,41 @@ import javax.transaction.Transactional; import java.io.IOException; import java.util.List; +@Service +@Transactional -@RestController -public class MyWebController { - @Autowired - FavoriteRepository albumsRepo; +@RequiredArgsConstructor +public class MusicService { + private final FavoriteRepository albumsRepo; RestTemplate restTemplate = new RestTemplate(); - /*@GetMapping(value="/musicSearch") - public String musicSearchByPath(@PathVariable String term){ - //node.js에서 fetch해서 url 가지고 와서, - //쳐기 -v로 봤을 때 app 접속한 결과 가지고 왔으면 application ~> - return "MusicSearch";}*/ - - @GetMapping(value="/musicSearch") - public MusicList musicSearchByParam(@RequestParam String term){ + public MusicList searchMusic(String term){ + String url = "https://itunes.apple.com/search?term="+ term + "&entity=album"; try{ - - String response = restTemplate.getForObject("https://itunes.apple.com/search?term="+term+"&entity=album", String.class); - + 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) { - + }catch (IOException e) { System.out.println(e.toString()); - } return null; } - @GetMapping(value="/likes") public List<FavoriteMusic> getLikes() { try{ return albumsRepo.findAll(); - } catch(Exception e){ + }catch (Exception e){ System.out.println(e.toString()); return null; } } - @PostMapping(value="/likes") - @Transactional - public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) + + public int saveFavorite(@RequestBody FavoriteMusicRequestDto favorite) { FavoriteMusic music = albumsRepo.save(favorite.toEntity()); if(music != null){ @@ -72,4 +59,16 @@ public class MyWebController { return 0; } } + + public int deleteFavorite(@PathVariable String id){ + try{ + albumsRepo.deleteById(id); + return 1; + + }catch(Exception e){ + System.out.println(e.toString()); + return 0; + } + } } + diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 9f20a9ce4463fb147938e43ba43b63a15a026a99..0b1b84532e00cb65b4808cac4649ed1fe2f28eb1 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -8,7 +8,7 @@ spring.datasource.password=0797 spring.jpa.properties.hibernate.show_sql=true spring.jpa.properties.hibernate.format_sql=true logging.level.org.hibernate.type.descriptor.sql=trace -spring.jpa.hibernate.ddl-auto=create +spring.jpa.hibernate.ddl-auto=update spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect spring.devtools.livereload.enabled = true \ No newline at end of file