diff --git a/postSong.json b/postSong.json new file mode 100644 index 0000000000000000000000000000000000000000..d620ae83f111e318fe6a2d52b9e00d163b215799 --- /dev/null +++ b/postSong.json @@ -0,0 +1,22 @@ +{ + "wrapperType":"collection", + "collectionType":"Album", + "artistId":994656, + "collectionId":580708175, + "amgArtistId":4739, + "artistName":"Led Zeppelin", + "collectionName":"Led Zeppelin IV (Remastered)", + "collectionCensoredName":"Led Zeppelin IV (Remastered)", + "artistViewUrl":"https://music.apple.com/us/artist/led-zeppelin/994656?uo=4", + "collectionViewUrl":"https://music.apple.com/us/album/led-zeppelin-iv-remastered/580708175?uo=4", + "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/5c/15/9b/5c159b27-95ca-b9a7-84e3-28e795fffd39/dj.kvkrpptq.jpg/60x60bb.jpg", + "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/5c/15/9b/5c159b27-95ca-b9a7-84e3-28e795fffd39/dj.kvkrpptq.jpg/100x100bb.jpg", + "collectionPrice":9.99, + "collectionExplicitness":"notExplicit", + "trackCount":8, + "copyright":"℗ 1971 Atlantic Recording Corporation, a Warner Music Group Company. Marketed by Rhino Entertainment Company, a Warner Music Group Company.", + "country":"USA", + "currency":"USD", + "releaseDate":"1971-11-08T08:00:00Z", + "primaryGenreName":"Rock" +} \ No newline at end of file diff --git a/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java b/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java index 66db2f84ee05cede96d09865d484f98dbe28a592..9cb176d729d5b73eae848493ca98819728043c47 100644 --- a/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java +++ b/src/main/java/com/ajou/prcoding/myweb/Controller/MyWebController.java @@ -1,56 +1,104 @@ package com.ajou.prcoding.myweb.Controller; +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 org.codehaus.jackson.map.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectMapper; 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.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; +import javax.transaction.Transactional; import java.io.IOException; -import java.net.URI; import java.util.List; -import com.ajou.prcoding.myweb.dto.MusicList; @RestController public class MyWebController { + @Autowired + FavoriteRepository albumsRepo; + //클래스 변수로 정의 RestTemplate restTemplate = new RestTemplate(); + MusicList list; - @GetMapping(value = "/musicSearch/{term}") + @GetMapping(value="/musicSearch/{term}") public MusicList musicSearchByPath(@PathVariable String term){ try { - String url = String.format("https://itunes.apple.com/search?term=%s&entity=album",term); + String url =String.format("https://itunes.apple.com/search?term=%s&entity=album",term); String response = restTemplate.getForObject(url, String.class); + ObjectMapper mapper = new ObjectMapper(); 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 list; } - @GetMapping(value = "/musicSearch") - public String musicSearchByParam(@RequestParam String term){ - return "Hello Param!"; + + @GetMapping(value="/musicSearch") + public MusicList musicSearchByParam(@RequestParam String term){ + try { + String url =String.format("https://itunes.apple.com/search?term=%s&entity=album",term); + String response = restTemplate.getForObject(url, String.class); + + ObjectMapper mapper = new ObjectMapper(); + + list = mapper.readValue(response, MusicList.class); + + System.out.println(list.getResultCount()); + + return list; + + } catch(IOException e) { + + System.out.println(e.toString()); + + } + return list; } - @GetMapping(value = "/likes") - @Autowired - public List<FavoriteMusic> getLikes(){ - FavoriteRepository albumRepo = null; + //Get Favorite Music list from Database + + @GetMapping(value="/likes") + public List<FavoriteMusic> getLikes() { + try { - return albumRepo.findAll(); - }catch (Exception e){ + + return albumsRepo.findAll(); + + } catch (Exception e) { + System.out.println(e.toString()); + return null; + + } + + } + + @PostMapping(value="/likes") + @Transactional + public int postLikes(@RequestBody FavoriteMusicRequestDto favorite){ + FavoriteMusic music = albumsRepo.save(favorite.toEntity()); + + if(music != null) { + return 1; + } + + else { + return 0; } } + } diff --git a/src/main/java/com/ajou/prcoding/myweb/MyWebApplication.java b/src/main/java/com/ajou/prcoding/myweb/MyWebApplication.java index 2dd804015e0be631f628264120528b880fb4116d..0236ff433b5f1a7bb6ae4df18c1fd88a17821312 100644 --- a/src/main/java/com/ajou/prcoding/myweb/MyWebApplication.java +++ b/src/main/java/com/ajou/prcoding/myweb/MyWebApplication.java @@ -2,9 +2,10 @@ package com.ajou.prcoding.myweb; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication -public class MyWebApplication { +public class MyWebApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MyWebApplication.class, args); diff --git a/src/main/java/com/ajou/prcoding/myweb/dto/FavoriteMusicRequestDto.java b/src/main/java/com/ajou/prcoding/myweb/dto/FavoriteMusicRequestDto.java new file mode 100644 index 0000000000000000000000000000000000000000..4455e9d8f5c50e9f4531bac7acfaec7c4d4cfc33 --- /dev/null +++ b/src/main/java/com/ajou/prcoding/myweb/dto/FavoriteMusicRequestDto.java @@ -0,0 +1,34 @@ +package com.ajou.prcoding.myweb.dto; + +import com.ajou.prcoding.myweb.entity.FavoriteMusic; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import javax.persistence.Column; + +@Getter +@Setter +@ToString +public class FavoriteMusicRequestDto { + private String collectionId; + private String collectionType; + private String artistId; + private String artistName; + private String artistViewUrl; + private String collectionName; + private String collectionViewUrl; + + public FavoriteMusic toEntity(){ + FavoriteMusic music = new FavoriteMusic(); + music.setCollectionId(this.collectionId); + music.setCollectionType(this.collectionType); + music.setArtistId(this.artistId); + music.setArtistViewUrl(this.artistViewUrl); + music.setArtistName(this.artistName); + music.setCollectionName(this.collectionName); + music.setCollectionViewUrl(this.collectionViewUrl); + + return music; + } +} \ No newline at end of file diff --git a/src/main/java/com/ajou/prcoding/myweb/dto/MusicList.java b/src/main/java/com/ajou/prcoding/myweb/dto/MusicList.java index 90ba309f755110e6c913149bfbd4e2c79240fd6e..7db09e1aef617a9b407d66d14d35db46bb22a07d 100644 --- a/src/main/java/com/ajou/prcoding/myweb/dto/MusicList.java +++ b/src/main/java/com/ajou/prcoding/myweb/dto/MusicList.java @@ -4,8 +4,7 @@ import lombok.Getter; import lombok.Setter; import lombok.ToString; -import java.util.List; -import java.util.Map; +import java.util.*; @Getter @Setter @@ -13,4 +12,4 @@ import java.util.Map; public class MusicList { private Integer resultCount; private List<Map<String, Object>> results; -} +} \ No newline at end of file diff --git a/src/main/java/com/ajou/prcoding/myweb/entity/FavoriteMusic.java b/src/main/java/com/ajou/prcoding/myweb/entity/FavoriteMusic.java index 51367f49a2404d04c958897afa6203030ad361a1..f69a5c92b39f4eeee29e0150b7c5c226cc491f74 100644 --- a/src/main/java/com/ajou/prcoding/myweb/entity/FavoriteMusic.java +++ b/src/main/java/com/ajou/prcoding/myweb/entity/FavoriteMusic.java @@ -4,22 +4,20 @@ import lombok.Getter; import lombok.Setter; import lombok.ToString; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; +import javax.persistence.*; @Entity -@Table(schema = "favoritMusic") +@Table(name="favoriteMusic") @Getter @Setter @ToString public class FavoriteMusic { - @Id @Column(length = 32) private String collectionId; + @Id @Column(name="collection_id", length=32) + private String collectionId; @Column private String collectionType; @Column private String artistId; @Column private String artistName; @Column private String artistViewUrl; @Column private String collectionName; @Column private String collectionViewUrl; -} +} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 89355fba9e3963599891e62714848d11ddd28887..3fd6579a8d6b64a8d540ed0b781eb285cff5407b 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -6,5 +6,5 @@ spring.datasource.password=0815 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