From f41ce2ec3019759a4d088515fd984c07406d085a Mon Sep 17 00:00:00 2001 From: Reeverflow Date: Sat, 21 Feb 2026 17:43:36 +0100 Subject: [PATCH] Init playlist service/Rename api postmapping root to /v2 --- .../controllers/VideoController.java | 14 ++++++++- .../dto/SaveNewPlaylistRequest.java | 8 +++++ .../video_downloader/entity/Playlist.java | 19 ++++++++++++ .../repositories/PlaylistRepository.java | 7 +++++ .../services/PlaylistService.java | 29 +++++++++++++++++++ .../{YtdlpService.java => YTDLPService.java} | 2 +- 6 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/example/video_downloader/dto/SaveNewPlaylistRequest.java create mode 100644 src/main/java/com/example/video_downloader/entity/Playlist.java create mode 100644 src/main/java/com/example/video_downloader/repositories/PlaylistRepository.java create mode 100644 src/main/java/com/example/video_downloader/services/PlaylistService.java rename src/main/java/com/example/video_downloader/services/{YtdlpService.java => YTDLPService.java} (98%) diff --git a/src/main/java/com/example/video_downloader/controllers/VideoController.java b/src/main/java/com/example/video_downloader/controllers/VideoController.java index 404546e..7f41ace 100644 --- a/src/main/java/com/example/video_downloader/controllers/VideoController.java +++ b/src/main/java/com/example/video_downloader/controllers/VideoController.java @@ -1,7 +1,10 @@ package com.example.video_downloader.controllers; +import com.example.video_downloader.dto.SaveNewPlaylistRequest; import com.example.video_downloader.dto.SaveNewVideoRequest; +import com.example.video_downloader.entity.Playlist; import com.example.video_downloader.entity.Video; +import com.example.video_downloader.services.PlaylistService; import com.example.video_downloader.services.VideoService; import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; @@ -11,13 +14,16 @@ import org.springframework.web.bind.annotation.*; import java.util.List; @RestController -@RequestMapping(path="/video") +@RequestMapping(path="/v2") @CrossOrigin(origins = "http://localhost:3000") public class VideoController { @Autowired private VideoService videoService; + @Autowired + private PlaylistService playlistService; + @Data private static class Response { private Long id; @@ -34,6 +40,12 @@ public class VideoController { } + @PostMapping(path = "/playlists") + public void saveNewPlaylist(@RequestBody SaveNewPlaylistRequest request){ + Playlist playlist = playlistService.saveNewPlaylist(request); + + } + @GetMapping(path = "/all") public ResponseEntity> getAllVideos(){ return ResponseEntity.ok(videoService.getVideos()); diff --git a/src/main/java/com/example/video_downloader/dto/SaveNewPlaylistRequest.java b/src/main/java/com/example/video_downloader/dto/SaveNewPlaylistRequest.java new file mode 100644 index 0000000..a81293b --- /dev/null +++ b/src/main/java/com/example/video_downloader/dto/SaveNewPlaylistRequest.java @@ -0,0 +1,8 @@ +package com.example.video_downloader.dto; + +import lombok.Data; + +@Data +public class SaveNewPlaylistRequest { + private String url; +} diff --git a/src/main/java/com/example/video_downloader/entity/Playlist.java b/src/main/java/com/example/video_downloader/entity/Playlist.java new file mode 100644 index 0000000..d39ab4a --- /dev/null +++ b/src/main/java/com/example/video_downloader/entity/Playlist.java @@ -0,0 +1,19 @@ +package com.example.video_downloader.entity; + +import jakarta.persistence.*; +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +@Entity +@Table(name = "playlists") +public class Playlist { + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE) + private Long id; + + private String url; + private StatusEnum status; + +} diff --git a/src/main/java/com/example/video_downloader/repositories/PlaylistRepository.java b/src/main/java/com/example/video_downloader/repositories/PlaylistRepository.java new file mode 100644 index 0000000..a4d2352 --- /dev/null +++ b/src/main/java/com/example/video_downloader/repositories/PlaylistRepository.java @@ -0,0 +1,7 @@ +package com.example.video_downloader.repositories; + +import com.example.video_downloader.entity.Playlist; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface PlaylistRepository extends JpaRepository { +} diff --git a/src/main/java/com/example/video_downloader/services/PlaylistService.java b/src/main/java/com/example/video_downloader/services/PlaylistService.java new file mode 100644 index 0000000..44f7e99 --- /dev/null +++ b/src/main/java/com/example/video_downloader/services/PlaylistService.java @@ -0,0 +1,29 @@ +package com.example.video_downloader.services; + +import com.example.video_downloader.dto.SaveNewPlaylistRequest; +import com.example.video_downloader.entity.Playlist; +import com.example.video_downloader.entity.StatusEnum; +import com.example.video_downloader.repositories.PlaylistRepository; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.List; + +public class PlaylistService { + + @Autowired + private PlaylistRepository playlistRepository; + + public Playlist saveNewPlaylist(SaveNewPlaylistRequest request){ + Playlist playlist = new Playlist(); + + playlist.setStatus(StatusEnum.NEW); + playlist.setUrl(request.getUrl()); + playlistRepository.save(playlist); + return playlist; + + } + + public List getAllPlaylists(){ + return playlistRepository.findAll(); + } +} diff --git a/src/main/java/com/example/video_downloader/services/YtdlpService.java b/src/main/java/com/example/video_downloader/services/YTDLPService.java similarity index 98% rename from src/main/java/com/example/video_downloader/services/YtdlpService.java rename to src/main/java/com/example/video_downloader/services/YTDLPService.java index 59a41d7..8066c37 100644 --- a/src/main/java/com/example/video_downloader/services/YtdlpService.java +++ b/src/main/java/com/example/video_downloader/services/YTDLPService.java @@ -13,7 +13,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; -public class YtdlpService { +public class YTDLPService { @Autowired private VideoRepository videoRepository;