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