From cd6cc9812abb261fb8cb9c102b4324db8c2bf116 Mon Sep 17 00:00:00 2001 From: Reeverflow Date: Thu, 5 Feb 2026 11:17:55 +0100 Subject: [PATCH] Forgot to commit and push. After the base is done, I'll be following normal git principles. --- pom.xml | 7 ++++ .../controllers/VideoController.java | 33 +++++++++++++++++++ .../dto/SaveNewVideoRequest.java | 8 +++++ .../video_downloader/entity/StatusEnum.java | 5 +++ .../video_downloader/entity/Video.java | 21 ++++++++++++ .../repositories/VideoRepository.java | 9 +++++ .../services/VideoService.java | 25 ++++++++++++++ 7 files changed, 108 insertions(+) create mode 100644 src/main/java/com/example/video_downloader/controllers/VideoController.java create mode 100644 src/main/java/com/example/video_downloader/dto/SaveNewVideoRequest.java create mode 100644 src/main/java/com/example/video_downloader/entity/StatusEnum.java create mode 100644 src/main/java/com/example/video_downloader/entity/Video.java create mode 100644 src/main/java/com/example/video_downloader/repositories/VideoRepository.java create mode 100644 src/main/java/com/example/video_downloader/services/VideoService.java diff --git a/pom.xml b/pom.xml index fd2514f..4c5fcd6 100644 --- a/pom.xml +++ b/pom.xml @@ -45,6 +45,13 @@ spring-boot-starter-webmvc + + org.projectlombok + lombok + 1.18.40 + provided + + org.postgresql postgresql diff --git a/src/main/java/com/example/video_downloader/controllers/VideoController.java b/src/main/java/com/example/video_downloader/controllers/VideoController.java new file mode 100644 index 0000000..b47b44a --- /dev/null +++ b/src/main/java/com/example/video_downloader/controllers/VideoController.java @@ -0,0 +1,33 @@ +package com.example.video_downloader.controllers; + +import com.example.video_downloader.dto.SaveNewVideoRequest; +import com.example.video_downloader.repositories.VideoRepository; +import com.example.video_downloader.services.VideoService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping(path = "/video" ) +@CrossOrigin(origins = "http://localhost:3000") +public class VideoController { + + @Autowired + private VideoService videoService; + + @Data + private class Response { + private Long id; + } + + @PostMapping(path = "/video") + public Response saveNewVideo(@RequestBody SaveNewVideoRequest request){ + + videoService.saveNewVideo(request); + Response response = new Response(); + response.setId(videoService.saveNewVideo(request).getId()); + + return response; + + } +} diff --git a/src/main/java/com/example/video_downloader/dto/SaveNewVideoRequest.java b/src/main/java/com/example/video_downloader/dto/SaveNewVideoRequest.java new file mode 100644 index 0000000..bfdf986 --- /dev/null +++ b/src/main/java/com/example/video_downloader/dto/SaveNewVideoRequest.java @@ -0,0 +1,8 @@ +package com.example.video_downloader.dto; + +import lombok.Data; + +@Data +public class SaveNewVideoRequest { + private String url; +} diff --git a/src/main/java/com/example/video_downloader/entity/StatusEnum.java b/src/main/java/com/example/video_downloader/entity/StatusEnum.java new file mode 100644 index 0000000..11a1396 --- /dev/null +++ b/src/main/java/com/example/video_downloader/entity/StatusEnum.java @@ -0,0 +1,5 @@ +package com.example.video_downloader.entity; + +public enum StatusEnum { + NEW, FAILED, SAVED +} diff --git a/src/main/java/com/example/video_downloader/entity/Video.java b/src/main/java/com/example/video_downloader/entity/Video.java new file mode 100644 index 0000000..1c87dd2 --- /dev/null +++ b/src/main/java/com/example/video_downloader/entity/Video.java @@ -0,0 +1,21 @@ +package com.example.video_downloader.entity; + +import jakarta.persistence.*; +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +@Entity +@Table(name = "videos") +public class Video { + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE) + private Long id; + + private String url; + private String ytld; + private String ytMetaData; + private StatusEnum status; + private String fullPath; +} diff --git a/src/main/java/com/example/video_downloader/repositories/VideoRepository.java b/src/main/java/com/example/video_downloader/repositories/VideoRepository.java new file mode 100644 index 0000000..77650f4 --- /dev/null +++ b/src/main/java/com/example/video_downloader/repositories/VideoRepository.java @@ -0,0 +1,9 @@ +package com.example.video_downloader.repositories; + +import com.example.video_downloader.entity.Video; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface VideoRepository extends JpaRepository { +} diff --git a/src/main/java/com/example/video_downloader/services/VideoService.java b/src/main/java/com/example/video_downloader/services/VideoService.java new file mode 100644 index 0000000..f2e5325 --- /dev/null +++ b/src/main/java/com/example/video_downloader/services/VideoService.java @@ -0,0 +1,25 @@ +package com.example.video_downloader.services; + +import com.example.video_downloader.dto.SaveNewVideoRequest; +import com.example.video_downloader.entity.StatusEnum; +import com.example.video_downloader.entity.Video; +import com.example.video_downloader.repositories.VideoRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class VideoService { + + @Autowired + private VideoRepository videoRepository; + + public Video saveNewVideo(SaveNewVideoRequest request){ + Video video = new Video(); + video.setStatus(StatusEnum.NEW); + video.setUrl(request.getUrl()); + + videoRepository.save(video); + return video; + } + +}