73 lines
2.8 KiB
Java
73 lines
2.8 KiB
Java
package ru.soune.no_copy.service;
|
|
|
|
import lombok.AllArgsConstructor;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import ru.soune.no_copy.dto.UserContentRequest;
|
|
import ru.soune.no_copy.dto.UserContentUpdateRequest;
|
|
import ru.soune.no_copy.entity.FileType;
|
|
import ru.soune.no_copy.entity.User;
|
|
import ru.soune.no_copy.entity.UserContent;
|
|
import ru.soune.no_copy.exception.ContentNotFoundException;
|
|
import ru.soune.no_copy.exception.UserNotFoundException;
|
|
import ru.soune.no_copy.mapper.UserContentMapper;
|
|
import ru.soune.no_copy.repository.UserContentRepository;
|
|
import ru.soune.no_copy.repository.UserRepository;
|
|
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
|
|
@Service
|
|
@AllArgsConstructor
|
|
public class UserContentService {
|
|
|
|
private final UserContentRepository userContentRepository;
|
|
|
|
private final UserRepository userRepository;
|
|
|
|
private final UserContentMapper userContentMapper;
|
|
|
|
public List<UserContent> findByUser(long userId) {
|
|
return userContentRepository.findByUserId(userId);
|
|
}
|
|
|
|
@Transactional
|
|
public UserContent addUserContent(UserContentRequest userContentRequest) {
|
|
UserContent userContent = new UserContent();
|
|
|
|
Optional<User> byEmail = userRepository.findByEmail(userContentRequest.userEmail());
|
|
User user = byEmail.orElseThrow(() -> new UserNotFoundException(userContentRequest.userEmail()));
|
|
|
|
userContent.setUser(user);
|
|
userContent.setFilename(userContentRequest.fileName());
|
|
userContent.setFileExtension(userContentRequest.fileExtension());
|
|
userContent.setFilePath(userContentRequest.filePath());
|
|
userContent.setFileType(FileType.valueOf(userContentRequest.fileType()));
|
|
userContent.setOriginalFilename(userContentRequest.originalFilename());
|
|
userContent.setProtectionLevel(userContentRequest.protectionLevel());
|
|
userContent.setFileSize(userContentRequest.fileSize());
|
|
|
|
//TODO add
|
|
// @Column(name = "protection_hash", length = 64)
|
|
// private String protectionHash;
|
|
// @Column(name = "watermark_id", length = 50)
|
|
// private String watermarkId;
|
|
|
|
return userContentRepository.save(userContent);
|
|
}
|
|
|
|
@Transactional
|
|
public UserContent updateUserContent(UserContentUpdateRequest userContentRequest) {
|
|
UserContent entity = userContentRepository.findById(userContentRequest.id())
|
|
.orElseThrow(() -> new ContentNotFoundException("Content not found with: " + userContentRequest.id()));
|
|
|
|
userContentMapper.updateEntityFromDto(userContentRequest, entity);
|
|
|
|
return userContentRepository.save(entity);
|
|
}
|
|
|
|
public void deleteUserContent(long userContentId) {
|
|
userContentRepository.deleteById(userContentId);
|
|
}
|
|
}
|