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 f1a85ebd9a6f86a86c82de96b3a881d230889b13..2dd804015e0be631f628264120528b880fb4116d 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 f7eb4cac1cfdefb21568c438de53bdb212165b92..f5dfba3d40078d1b5c4e739dcc912582e50f7503 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 79ae88f203c8eb9a06570c95c1b8949596c0496a..0b584373748a34ece7b9fb9ac9f292115283d558 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 9eb57ea30007ce312d053c5cddba4132956a1d4b..529c6ae3fbe2406109bc4e1e0682a5598fdeb17b 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 0000000000000000000000000000000000000000..c2fed0860f718d212ee52be09972adb063014133 --- /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 5c5167fc2d30f8dd56cc21eb7823922abb27d598..921201c94e84d778cc6fe29f412fa4e4960956cb 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 0000000000000000000000000000000000000000..8877335ec7af6a7a176909084373411176f07202 --- /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 ef2e6cf35350c9c3f9e6e9ad11fa8ee0e35db63d..5a4de1cac5fd3b7c4410cc7f73892e331e0a557c 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 ef3934896423b3ce414cf6d752daf084b95afeeb..0000000000000000000000000000000000000000 --- 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 4e9f4a8897b63b04fea72e2f610bf2ab2198eb75..0000000000000000000000000000000000000000 --- 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(); -}