NCP-3 add usercontent crud's,dto,exception and start restcontroller

This commit is contained in:
vladp
2025-11-26 13:03:20 +07:00
parent 11b74e046d
commit d9faa311a9
10 changed files with 159 additions and 3 deletions
@@ -0,0 +1,72 @@
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);
}
}