From 739c81a2c3169513dadd0fa470d4165a2831dd24 Mon Sep 17 00:00:00 2001
From: JangMH <dnsfl1517@ajou.ac.kr>
Date: Wed, 9 Apr 2025 18:05:11 +0900
Subject: [PATCH] Add delete Favorite

---
 .../myweb/MyWebApplication.java               |  2 +-
 .../myweb/controller/MyWebController.java     | 33 ++++++++++++-------
 .../myweb/dto/FavoriteMusicRequestDto.java    |  4 +--
 .../myweb/dto/MusicList.java                  |  2 +-
 .../com/ajou/prcoding/myweb/dto/Tostring.java |  5 +++
 .../myweb/entity/FavoriteMusic.java           |  2 +-
 .../myweb/repository/FavoriteRepository.java  | 14 ++++++++
 .../myweb/service/MusicService.java           | 17 +++++++---
 .../ajou/procoding/myweb/dto/Tostring.java    |  5 ---
 .../myweb/repository/FavoriteRepository.java  | 12 -------
 10 files changed, 58 insertions(+), 38 deletions(-)
 rename src/main/java/com/ajou/{procoding => prcoding}/myweb/MyWebApplication.java (89%)
 rename src/main/java/com/ajou/{procoding => prcoding}/myweb/controller/MyWebController.java (54%)
 rename src/main/java/com/ajou/{procoding => prcoding}/myweb/dto/FavoriteMusicRequestDto.java (90%)
 rename src/main/java/com/ajou/{procoding => prcoding}/myweb/dto/MusicList.java (85%)
 create mode 100644 src/main/java/com/ajou/prcoding/myweb/dto/Tostring.java
 rename src/main/java/com/ajou/{procoding => prcoding}/myweb/entity/FavoriteMusic.java (93%)
 create mode 100644 src/main/java/com/ajou/prcoding/myweb/repository/FavoriteRepository.java
 rename src/main/java/com/ajou/{procoding => prcoding}/myweb/service/MusicService.java (72%)
 delete mode 100644 src/main/java/com/ajou/procoding/myweb/dto/Tostring.java
 delete mode 100644 src/main/java/com/ajou/procoding/myweb/repository/FavoriteRepository.java

diff --git a/src/main/java/com/ajou/procoding/myweb/MyWebApplication.java b/src/main/java/com/ajou/prcoding/myweb/MyWebApplication.java
similarity index 89%
rename from src/main/java/com/ajou/procoding/myweb/MyWebApplication.java
rename to src/main/java/com/ajou/prcoding/myweb/MyWebApplication.java
index f1a85eb..2dd8040 100644
--- a/src/main/java/com/ajou/procoding/myweb/MyWebApplication.java
+++ b/src/main/java/com/ajou/prcoding/myweb/MyWebApplication.java
@@ -1,4 +1,4 @@
-package com.ajou.procoding.myweb;
+package com.ajou.prcoding.myweb;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/src/main/java/com/ajou/procoding/myweb/controller/MyWebController.java b/src/main/java/com/ajou/prcoding/myweb/controller/MyWebController.java
similarity index 54%
rename from src/main/java/com/ajou/procoding/myweb/controller/MyWebController.java
rename to src/main/java/com/ajou/prcoding/myweb/controller/MyWebController.java
index f7eb4ca..f5dfba3 100644
--- a/src/main/java/com/ajou/procoding/myweb/controller/MyWebController.java
+++ b/src/main/java/com/ajou/prcoding/myweb/controller/MyWebController.java
@@ -1,4 +1,4 @@
-package com.ajou.procoding.myweb.controller;
+package com.ajou.prcoding.myweb.controller;
 
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -6,11 +6,11 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.client.RestTemplate;
 
-import com.ajou.procoding.myweb.dto.FavoriteMusicRequestDto;
-import com.ajou.procoding.myweb.dto.MusicList;
-import com.ajou.procoding.myweb.entity.FavoriteMusic;
-import com.ajou.procoding.myweb.repository.FavoriteRepository;
-import com.ajou.procoding.myweb.service.MusicService;
+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.ajou.prcoding.myweb.service.MusicService;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import jakarta.transaction.Transactional;
@@ -19,13 +19,14 @@ import java.io.IOException;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
 @RestController
 public class MyWebController {
 
-
     @Autowired
     MusicService service;
 
@@ -39,16 +40,26 @@ public class MyWebController {
         return service.searchMusic(name);
     }
 
-    @GetMapping(value="/likes")  //Get Favorite Music list from Database
+    @GetMapping(value = "/likes") // Get Favorite Music list from Database
     public List<FavoriteMusic> getLikes() {
         return service.getLikes();
     }
 
-    @PostMapping(value="/likes")
+    @PostMapping(value = "/likes")
     public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) {
         return service.saveFavorite(favorite);
     }
 
-}
-
+    @DeleteMapping("/likes/{id}")
+    public ResponseEntity<String> deleteFavorite(@PathVariable String id) {
+        try {
+            service.deleteFavorite(id); // service 호출
+            return ResponseEntity.ok("삭제 완료: " + id);
+        } catch (IllegalArgumentException e) {
+            return ResponseEntity.badRequest().body("존재하지 않는 ID: " + id);
+        } catch (Exception e) {
+            return ResponseEntity.internalServerError().body("서버 오류 발생");
+        }
+    }
 
+}
diff --git a/src/main/java/com/ajou/procoding/myweb/dto/FavoriteMusicRequestDto.java b/src/main/java/com/ajou/prcoding/myweb/dto/FavoriteMusicRequestDto.java
similarity index 90%
rename from src/main/java/com/ajou/procoding/myweb/dto/FavoriteMusicRequestDto.java
rename to src/main/java/com/ajou/prcoding/myweb/dto/FavoriteMusicRequestDto.java
index 79ae88f..0b58437 100644
--- a/src/main/java/com/ajou/procoding/myweb/dto/FavoriteMusicRequestDto.java
+++ b/src/main/java/com/ajou/prcoding/myweb/dto/FavoriteMusicRequestDto.java
@@ -1,6 +1,6 @@
-package com.ajou.procoding.myweb.dto;
+package com.ajou.prcoding.myweb.dto;
 
-import com.ajou.procoding.myweb.entity.FavoriteMusic;
+import com.ajou.prcoding.myweb.entity.FavoriteMusic;
 
 import jakarta.persistence.Column;
 import lombok.Getter;
diff --git a/src/main/java/com/ajou/procoding/myweb/dto/MusicList.java b/src/main/java/com/ajou/prcoding/myweb/dto/MusicList.java
similarity index 85%
rename from src/main/java/com/ajou/procoding/myweb/dto/MusicList.java
rename to src/main/java/com/ajou/prcoding/myweb/dto/MusicList.java
index 9eb57ea..529c6ae 100644
--- a/src/main/java/com/ajou/procoding/myweb/dto/MusicList.java
+++ b/src/main/java/com/ajou/prcoding/myweb/dto/MusicList.java
@@ -1,4 +1,4 @@
-package com.ajou.procoding.myweb.dto;
+package com.ajou.prcoding.myweb.dto;
 
 
 import java.util.List;
diff --git a/src/main/java/com/ajou/prcoding/myweb/dto/Tostring.java b/src/main/java/com/ajou/prcoding/myweb/dto/Tostring.java
new file mode 100644
index 0000000..c2fed08
--- /dev/null
+++ b/src/main/java/com/ajou/prcoding/myweb/dto/Tostring.java
@@ -0,0 +1,5 @@
+package com.ajou.prcoding.myweb.dto;
+
+public @interface Tostring {
+
+}
diff --git a/src/main/java/com/ajou/procoding/myweb/entity/FavoriteMusic.java b/src/main/java/com/ajou/prcoding/myweb/entity/FavoriteMusic.java
similarity index 93%
rename from src/main/java/com/ajou/procoding/myweb/entity/FavoriteMusic.java
rename to src/main/java/com/ajou/prcoding/myweb/entity/FavoriteMusic.java
index 5c5167f..921201c 100644
--- a/src/main/java/com/ajou/procoding/myweb/entity/FavoriteMusic.java
+++ b/src/main/java/com/ajou/prcoding/myweb/entity/FavoriteMusic.java
@@ -1,4 +1,4 @@
-package com.ajou.procoding.myweb.entity;
+package com.ajou.prcoding.myweb.entity;
 
 import jakarta.persistence.Column;
 import jakarta.persistence.Entity;
diff --git a/src/main/java/com/ajou/prcoding/myweb/repository/FavoriteRepository.java b/src/main/java/com/ajou/prcoding/myweb/repository/FavoriteRepository.java
new file mode 100644
index 0000000..8877335
--- /dev/null
+++ b/src/main/java/com/ajou/prcoding/myweb/repository/FavoriteRepository.java
@@ -0,0 +1,14 @@
+package com.ajou.prcoding.myweb.repository;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.ajou.prcoding.myweb.entity.FavoriteMusic;
+
+public interface FavoriteRepository extends JpaRepository<FavoriteMusic, String> {
+    List<FavoriteMusic> findAll();
+    void deleteById(String id);
+}
+
+
diff --git a/src/main/java/com/ajou/procoding/myweb/service/MusicService.java b/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java
similarity index 72%
rename from src/main/java/com/ajou/procoding/myweb/service/MusicService.java
rename to src/main/java/com/ajou/prcoding/myweb/service/MusicService.java
index ef2e6cf..5a4de1c 100644
--- a/src/main/java/com/ajou/procoding/myweb/service/MusicService.java
+++ b/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java
@@ -1,4 +1,4 @@
-package com.ajou.procoding.myweb.service;
+package com.ajou.prcoding.myweb.service;
 
 import java.io.IOException;
 import java.util.List;
@@ -6,10 +6,10 @@ import java.util.List;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
-import com.ajou.procoding.myweb.dto.FavoriteMusicRequestDto;
-import com.ajou.procoding.myweb.dto.MusicList;
-import com.ajou.procoding.myweb.entity.FavoriteMusic;
-import com.ajou.procoding.myweb.repository.FavoriteRepository;
+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 jakarta.transaction.Transactional;
@@ -45,4 +45,11 @@ public class MusicService {
         FavoriteMusic music = albumsRepo.save(favorite.toEntity());
         return music != null ? 1 : 0;
     }
+
+    public void deleteFavorite(String id) {
+        if (!albumsRepo.existsById(id)) {
+            throw new IllegalArgumentException("해당 ID는 존재하지 않습니다: " + id);
+        }
+        albumsRepo.deleteById(id);
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/com/ajou/procoding/myweb/dto/Tostring.java b/src/main/java/com/ajou/procoding/myweb/dto/Tostring.java
deleted file mode 100644
index ef39348..0000000
--- a/src/main/java/com/ajou/procoding/myweb/dto/Tostring.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.ajou.procoding.myweb.dto;
-
-public @interface Tostring {
-
-}
diff --git a/src/main/java/com/ajou/procoding/myweb/repository/FavoriteRepository.java b/src/main/java/com/ajou/procoding/myweb/repository/FavoriteRepository.java
deleted file mode 100644
index 4e9f4a8..0000000
--- a/src/main/java/com/ajou/procoding/myweb/repository/FavoriteRepository.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.ajou.procoding.myweb.repository;
-
-import java.util.List;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-
-import com.ajou.procoding.myweb.entity.FavoriteMusic;
-
-public interface FavoriteRepository extends 	
-            JpaRepository<FavoriteMusic, String> {
-    List<FavoriteMusic> findAll();
-}
-- 
GitLab