ADD Clip database insertion & UPDATE schema

This commit is contained in:
2025-06-25 19:07:38 +02:00
parent 4f4f2831d9
commit e93ccd2ecd
7 changed files with 101 additions and 38 deletions

View File

@@ -6,6 +6,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import com.ddf.vodsystem.entities.APIResponse;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.*;

View File

@@ -36,13 +36,13 @@ public class Clip {
private Integer height;
@Column(name = "fps", nullable = false)
private Integer fps;
private Float fps;
@Column(name = "duration", nullable = false)
private Integer duration;
private Float duration;
@Column(name = "file_size", nullable = false)
private Long fileSize;
private Float fileSize;
@Column(name = "video_path", nullable = false, length = 255)
private String videoPath;

View File

@@ -0,0 +1,36 @@
package com.ddf.vodsystem.security;
import com.ddf.vodsystem.entities.User;
import lombok.Getter;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.oauth2.core.user.OAuth2User;
import java.util.Collection;
import java.util.Map;
public class CustomOAuth2User implements OAuth2User {
private final OAuth2User oauth2User;
@Getter
private final User user;
public CustomOAuth2User(OAuth2User oauth2User, User user) {
this.oauth2User = oauth2User;
this.user = user;
}
@Override
public Map<String, Object> getAttributes() {
return oauth2User.getAttributes();
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return oauth2User.getAuthorities();
}
@Override
public String getName() {
return oauth2User.getName();
}
}

View File

@@ -4,16 +4,16 @@ import com.ddf.vodsystem.repositories.UserRepository;
import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService;
import org.springframework.security.oauth2.client.userinfo.OAuth2UserRequest;
import org.springframework.security.oauth2.client.userinfo.OAuth2UserService;
import org.springframework.security.oauth2.core.OAuth2AuthenticationException;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Optional;
@Service
public class CustomOAuth2UserService extends DefaultOAuth2UserService {
public class CustomOAuth2UserService implements OAuth2UserService<OAuth2UserRequest, OAuth2User> {
private final UserRepository userRepository;
@@ -22,26 +22,26 @@ public class CustomOAuth2UserService extends DefaultOAuth2UserService {
}
@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
OAuth2User oAuth2User = super.loadUser(userRequest);
public CustomOAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
var delegate = new DefaultOAuth2UserService();
var oAuth2User = delegate.loadUser(userRequest);
String email = oAuth2User.getAttribute("email");
String name = oAuth2User.getAttribute("name");
String googleId = oAuth2User.getAttribute("sub");
Optional<User> existingUser = userRepository.findByGoogleId(googleId);
User user = userRepository.findByGoogleId(googleId)
.orElseGet(() -> {
User newUser = new User();
newUser.setEmail(email);
newUser.setName(name);
newUser.setGoogleId(googleId);
newUser.setUsername(email);
newUser.setRole(0);
newUser.setCreatedAt(LocalDateTime.now());
return userRepository.save(newUser);
});
if (existingUser.isEmpty()) {
User user = new User();
user.setEmail(email);
user.setName(name);
user.setGoogleId(googleId);
user.setUsername(email);
user.setRole(0);
user.setCreatedAt(LocalDateTime.now());
userRepository.save(user);
}
return oAuth2User;
return new CustomOAuth2User(oAuth2User, user);
}
}

View File

@@ -1,16 +1,22 @@
package com.ddf.vodsystem.services;
import com.ddf.vodsystem.entities.VideoMetadata;
import com.ddf.vodsystem.entities.Job;
import com.ddf.vodsystem.entities.JobStatus;
import com.ddf.vodsystem.entities.*;
import com.ddf.vodsystem.repositories.ClipRepository;
import com.ddf.vodsystem.security.CustomOAuth2User;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
@Service
public class EditService {
private final JobService jobService;
private final ClipRepository clipRepository;
public EditService(JobService jobService) {
public EditService(JobService jobService, ClipRepository clipRepository) {
this.jobService = jobService;
this.clipRepository = clipRepository;
}
public void edit(String uuid, VideoMetadata videoMetadata) {
@@ -21,6 +27,26 @@ public class EditService {
public void process(String uuid) {
jobService.jobReady(uuid);
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (auth != null && auth.isAuthenticated() && auth.getPrincipal() instanceof CustomOAuth2User oAuth2user) {
VideoMetadata videoMetadata = jobService.getJob(uuid).getOutputVideoMetadata();
User user = oAuth2user.getUser();
Clip clip = new Clip();
clip.setTitle("test");
clip.setUser(user);
clip.setDescription("This is a test");
clip.setCreatedAt(LocalDateTime.now());
clip.setWidth(videoMetadata.getWidth());
clip.setHeight(videoMetadata.getHeight());
clip.setFps(videoMetadata.getFps());
clip.setDuration(videoMetadata.getEndPoint() -
videoMetadata.getStartPoint());
clip.setFileSize(videoMetadata.getFileSize());
clip.setVideoPath("test");
clipRepository.save(clip);
}
}
public float getProgress(String uuid) {