From 50907e63cdd97bcd68650be75f8fef93efa49dd6 Mon Sep 17 00:00:00 2001
From: lucple <dlwnstj99@naver.com>
Date: Mon, 17 Jul 2023 16:13:24 +0900
Subject: [PATCH] [Add] post_likes

---
 pom.xml                                       |  7 ++++
 postSong.json                                 | 22 ++++++++++++
 .../controller/MyWebController.java           | 34 ++++++++++++++++++
 .../dto/FavoriteMusicRequestDto.java          | 35 +++++++++++++++++++
 .../myspringweb/entity/FavoriteMusic.java     | 33 +++++++++++++++++
 .../repository/FavoriteRepository.java        | 10 ++++++
 6 files changed, 141 insertions(+)
 create mode 100644 postSong.json
 create mode 100644 src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java
 create mode 100644 src/main/java/kr/ajousw/myspringweb/entity/FavoriteMusic.java
 create mode 100644 src/main/java/kr/ajousw/myspringweb/repository/FavoriteRepository.java

diff --git a/pom.xml b/pom.xml
index 91feee1..5d69ad3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,6 +17,13 @@
 		<java.version>17</java.version>
 	</properties>
 	<dependencies>
+
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<version>8.0.33</version>
+		</dependency>
+
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-data-jpa</artifactId>
diff --git a/postSong.json b/postSong.json
new file mode 100644
index 0000000..ddb0c7e
--- /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"
+}
diff --git a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java
index 21a1b1e..c088c23 100644
--- a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java
+++ b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java
@@ -1,15 +1,24 @@
 package kr.ajousw.myspringweb.controller;
 
 import java.io.IOException;
+import java.util.List;
 
+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.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 jakarta.transaction.Transactional;
+import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto;
 import kr.ajousw.myspringweb.dto.MusicList;
+import kr.ajousw.myspringweb.entity.FavoriteMusic;
+import kr.ajousw.myspringweb.repository.FavoriteRepository;
 
 @RestController
 public class MyWebController {
@@ -51,4 +60,29 @@ public class MyWebController {
         }
         return null;
     }
+
+    @Autowired
+    FavoriteRepository albumsRepo;
+
+    @GetMapping(value = "/likes")
+    public List<FavoriteMusic> getLikes() {
+        try {
+            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/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java b/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java
new file mode 100644
index 0000000..4ec7552
--- /dev/null
+++ b/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java
@@ -0,0 +1,35 @@
+package kr.ajousw.myspringweb.dto;
+
+import jakarta.persistence.Column;
+import kr.ajousw.myspringweb.entity.FavoriteMusic;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+@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.setArtistName(this.artistName);
+        music.setArtistViewUrl(this.artistViewUrl);
+        music.setCollectionName(this.collectionName);
+        music.setCollectionViewUrl(this.collectionViewUrl);
+
+        return music;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/kr/ajousw/myspringweb/entity/FavoriteMusic.java b/src/main/java/kr/ajousw/myspringweb/entity/FavoriteMusic.java
new file mode 100644
index 0000000..d331fb2
--- /dev/null
+++ b/src/main/java/kr/ajousw/myspringweb/entity/FavoriteMusic.java
@@ -0,0 +1,33 @@
+package kr.ajousw.myspringweb.entity;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+@Entity
+@Table(name = "favoriteMusic")
+@Getter
+@Setter
+@ToString
+
+public class FavoriteMusic {
+    @Id
+    @Column(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;
+}
diff --git a/src/main/java/kr/ajousw/myspringweb/repository/FavoriteRepository.java b/src/main/java/kr/ajousw/myspringweb/repository/FavoriteRepository.java
new file mode 100644
index 0000000..51b0041
--- /dev/null
+++ b/src/main/java/kr/ajousw/myspringweb/repository/FavoriteRepository.java
@@ -0,0 +1,10 @@
+package kr.ajousw.myspringweb.repository;
+
+import java.util.List;
+import org.springframework.data.jpa.repository.JpaRepository;
+import kr.ajousw.myspringweb.entity.FavoriteMusic;
+
+public interface FavoriteRepository extends
+        JpaRepository<FavoriteMusic, String> {
+    List<FavoriteMusic> findAll();
+}
\ No newline at end of file
-- 
GitLab