From 9e8c7f0fa105cfbb2b66f1d7b83b6ec30a21f7bb Mon Sep 17 00:00:00 2001 From: vladp Date: Wed, 17 Dec 2025 01:19:48 +0700 Subject: [PATCH 1/2] add fileentity --- .../file/FileDownloadController.java | 172 +++++++++++ .../controller/file/FileEntityController.java | 210 +++++++++++++ .../no_copy/dto/file/FileEntityResponse.java | 33 +++ .../no_copy/dto/file/FileListResponse.java | 22 ++ .../soune/no_copy/entity/file/FileEntity.java | 78 +++++ .../soune/no_copy/entity/file/FileStatus.java | 8 + .../FileEntityNotFoundException.java | 11 + .../repository/FileEntityRepository.java | 33 +++ .../service/file/FileEntityService.java | 277 ++++++++++++++++++ .../service/file/FileUploadServiceImpl.java | 74 ++++- src/main/resources/application.yaml | 7 + 11 files changed, 921 insertions(+), 4 deletions(-) create mode 100644 src/main/java/ru/soune/no_copy/controller/file/FileDownloadController.java create mode 100644 src/main/java/ru/soune/no_copy/controller/file/FileEntityController.java create mode 100644 src/main/java/ru/soune/no_copy/dto/file/FileEntityResponse.java create mode 100644 src/main/java/ru/soune/no_copy/dto/file/FileListResponse.java create mode 100644 src/main/java/ru/soune/no_copy/entity/file/FileEntity.java create mode 100644 src/main/java/ru/soune/no_copy/entity/file/FileStatus.java create mode 100644 src/main/java/ru/soune/no_copy/exception/FileEntityNotFoundException.java create mode 100644 src/main/java/ru/soune/no_copy/repository/FileEntityRepository.java create mode 100644 src/main/java/ru/soune/no_copy/service/file/FileEntityService.java diff --git a/src/main/java/ru/soune/no_copy/controller/file/FileDownloadController.java b/src/main/java/ru/soune/no_copy/controller/file/FileDownloadController.java new file mode 100644 index 0000000..6be2c46 --- /dev/null +++ b/src/main/java/ru/soune/no_copy/controller/file/FileDownloadController.java @@ -0,0 +1,172 @@ +package ru.soune.no_copy.controller.file; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import ru.soune.no_copy.dto.file.FileEntityResponse; +import ru.soune.no_copy.entity.AuthToken; +import ru.soune.no_copy.exception.NotFoundAuthToken; +import ru.soune.no_copy.repository.AuthTokenRepository; +import ru.soune.no_copy.service.file.FileEntityService; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +@Slf4j +@RestController +@RequestMapping("/api/files") +@RequiredArgsConstructor +public class FileDownloadController { + + private final FileEntityService fileEntityService; + private final AuthTokenRepository authTokenRepository; + + /** + * Скачать файл по ID FileEntity + */ + @GetMapping("/download/{fileId}") + public ResponseEntity downloadFile( + @PathVariable String fileId, + @RequestHeader("Authorization") String tokenHeader) { + + try { + Long userId = getUserIdFromToken(tokenHeader); + FileEntityResponse fileInfo = fileEntityService.getById(fileId); + + if (!fileInfo.getUserId().equals(userId)) { + return ResponseEntity.status(403).build(); + } + + if (!fileInfo.isExistsOnDisk()) { + return ResponseEntity.status(404) + .body(null); + } + + Path filePath = Paths.get(fileInfo.getFilePath()); + Resource resource = new UrlResource(filePath.toUri()); + + if (!resource.exists()) { + return ResponseEntity.status(404).build(); + } + + String contentType = determineContentType(filePath); + + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType(contentType)) + .header(HttpHeaders.CONTENT_DISPOSITION, + "attachment; filename=\"" + fileInfo.getOriginalFileName() + "\"") + .header(HttpHeaders.CONTENT_LENGTH, String.valueOf(fileInfo.getFileSize())) + .body(resource); + + } catch (NotFoundAuthToken e) { + return ResponseEntity.status(401).build(); + } catch (Exception e) { + log.error("Error downloading file", e); + return ResponseEntity.status(500).build(); + } + } + + /** + * Получить предпросмотр файла (если поддерживается) + */ + @GetMapping("/preview/{fileId}") + public ResponseEntity previewFile( + @PathVariable String fileId, + @RequestHeader("Authorization") String tokenHeader) { + + try { + Long userId = getUserIdFromToken(tokenHeader); + FileEntityResponse fileInfo = fileEntityService.getById(fileId); + + if (!fileInfo.getUserId().equals(userId)) { + return ResponseEntity.status(403).build(); + } + + if (!isPreviewSupported(fileInfo.getMimeType())) { + return ResponseEntity.status(415) + .body(null); + } + + Path filePath = Paths.get(fileInfo.getFilePath()); + Resource resource = new UrlResource(filePath.toUri()); + + if (!resource.exists()) { + return ResponseEntity.status(404).build(); + } + + String contentType = determineContentType(filePath); + + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType(contentType)) + .header(HttpHeaders.CONTENT_DISPOSITION, + "inline; filename=\"" + fileInfo.getOriginalFileName() + "\"") + .body(resource); + + } catch (NotFoundAuthToken e) { + return ResponseEntity.status(401).build(); + } catch (Exception e) { + log.error("Error previewing file", e); + return ResponseEntity.status(500).build(); + } + } + + /** + * Получить информацию о файле для фронтенда + */ + @GetMapping("/info/{fileId}") + public ResponseEntity getFileInfo( + @PathVariable String fileId, + @RequestHeader("Authorization") String tokenHeader) { + + try { + Long userId = getUserIdFromToken(tokenHeader); + FileEntityResponse fileInfo = fileEntityService.getById(fileId); + + if (!fileInfo.getUserId().equals(userId)) { + return ResponseEntity.status(403).build(); + } + + return ResponseEntity.ok(fileInfo); + + } catch (NotFoundAuthToken e) { + return ResponseEntity.status(401).build(); + } catch (Exception e) { + log.error("Error getting file info", e); + return ResponseEntity.status(500).build(); + } + } + + private String determineContentType(Path filePath) throws IOException { + String contentType = Files.probeContentType(filePath); + if (contentType == null) { + contentType = "application/octet-stream"; + } + return contentType; + } + + private boolean isPreviewSupported(String mimeType) { + if (mimeType == null) { + return false; + } + + return mimeType.startsWith("image/") || + mimeType.startsWith("text/") || + mimeType.equals("application/pdf") || + mimeType.startsWith("video/") || + mimeType.startsWith("audio/"); + } + + private Long getUserIdFromToken(String tokenHeader) { + String token = tokenHeader.replace("Bearer ", ""); + AuthToken authToken = authTokenRepository.findByToken(token) + .orElseThrow(() -> new NotFoundAuthToken("Token not found")); + return authToken.getUser().getId(); + } +} diff --git a/src/main/java/ru/soune/no_copy/controller/file/FileEntityController.java b/src/main/java/ru/soune/no_copy/controller/file/FileEntityController.java new file mode 100644 index 0000000..77987a3 --- /dev/null +++ b/src/main/java/ru/soune/no_copy/controller/file/FileEntityController.java @@ -0,0 +1,210 @@ +package ru.soune.no_copy.controller.file; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import ru.soune.no_copy.dto.file.FileApiResponse; +import ru.soune.no_copy.dto.file.FileEntityResponse; +import ru.soune.no_copy.dto.file.FileListResponse; +import ru.soune.no_copy.entity.AuthToken; +import ru.soune.no_copy.exception.NotFoundAuthToken; +import ru.soune.no_copy.repository.AuthTokenRepository; +import ru.soune.no_copy.service.file.FileEntityService; + +@Slf4j +@RestController +@RequestMapping("/api/file-entities") +@RequiredArgsConstructor +public class FileEntityController { + + private final FileEntityService fileEntityService; + private final AuthTokenRepository authTokenRepository; + + /** + * Получить информацию о файле по ID + */ + @GetMapping("/{fileId}") + public ResponseEntity> getFileInfo( + @PathVariable String fileId, + @RequestHeader("Authorization") String tokenHeader) { + + try { + Long userId = getUserIdFromToken(tokenHeader); + FileEntityResponse fileInfo = fileEntityService.getById(fileId); + + if (!fileInfo.getUserId().equals(userId)) { + return ResponseEntity.status(403) + .body(FileApiResponse.error("Access denied")); + } + + return ResponseEntity.ok(FileApiResponse.success(fileInfo)); + + } catch (NotFoundAuthToken e) { + return ResponseEntity.status(401) + .body(FileApiResponse.error("Authentication required")); + } catch (Exception e) { + log.error("Error getting file info", e); + return ResponseEntity.badRequest() + .body(FileApiResponse.error("Failed to get file info: " + e.getMessage())); + } + } + + /** + * Получить информацию о файле по ID сессии загрузки + */ + @GetMapping("/by-session/{uploadSessionId}") + public ResponseEntity> getFileByUploadSession( + @PathVariable String uploadSessionId, + @RequestHeader("Authorization") String tokenHeader) { + + try { + Long userId = getUserIdFromToken(tokenHeader); + FileEntityResponse fileInfo = fileEntityService.getByUploadSessionId(uploadSessionId); + + if (!fileInfo.getUserId().equals(userId)) { + return ResponseEntity.status(403) + .body(FileApiResponse.error("Access denied")); + } + + return ResponseEntity.ok(FileApiResponse.success(fileInfo)); + + } catch (NotFoundAuthToken e) { + return ResponseEntity.status(401) + .body(FileApiResponse.error("Authentication required")); + } catch (Exception e) { + log.error("Error getting file by session", e); + return ResponseEntity.badRequest() + .body(FileApiResponse.error("Failed to get file: " + e.getMessage())); + } + } + + /** + * Получить все файлы пользователя + */ + @GetMapping("/my-files") + public ResponseEntity> getUserFiles( + @RequestHeader("Authorization") String tokenHeader, + @RequestParam(defaultValue = "1") int page, + @RequestParam(defaultValue = "20") int pageSize) { + + try { + Long userId = getUserIdFromToken(tokenHeader); + FileListResponse files = fileEntityService.getUserFiles(userId, page, pageSize); + + return ResponseEntity.ok(FileApiResponse.success(files)); + + } catch (NotFoundAuthToken e) { + return ResponseEntity.status(401) + .body(FileApiResponse.error("Authentication required")); + } catch (Exception e) { + log.error("Error getting user files", e); + return ResponseEntity.badRequest() + .body(FileApiResponse.error("Failed to get files: " + e.getMessage())); + } + } + + /** + * Поиск файлов пользователя + */ + @GetMapping("/search") + public ResponseEntity> searchFiles( + @RequestParam String query, + @RequestHeader("Authorization") String tokenHeader, + @RequestParam(defaultValue = "1") int page, + @RequestParam(defaultValue = "20") int pageSize) { + + try { + Long userId = getUserIdFromToken(tokenHeader); + FileListResponse allFiles = fileEntityService.getUserFiles(userId, 1, 1000); + + var filteredFiles = allFiles.getFiles().stream() + .filter(f -> f.getOriginalFileName().toLowerCase().contains(query.toLowerCase())) + .toList(); + + int start = (page - 1) * pageSize; + int end = Math.min(start + pageSize, filteredFiles.size()); + + FileListResponse response = FileListResponse.builder() + .files(filteredFiles.subList(start, Math.min(end, filteredFiles.size()))) + .totalCount(filteredFiles.size()) + .totalSize(allFiles.getTotalSize()) + .formattedTotalSize(allFiles.getFormattedTotalSize()) + .page(page) + .pageSize(pageSize) + .build(); + + return ResponseEntity.ok(FileApiResponse.success(response)); + + } catch (NotFoundAuthToken e) { + return ResponseEntity.status(401) + .body(FileApiResponse.error("Authentication required")); + } catch (Exception e) { + log.error("Error searching files", e); + return ResponseEntity.badRequest() + .body(FileApiResponse.error("Failed to search files: " + e.getMessage())); + } + } + + /** + * Получить общий размер файлов пользователя + */ + @GetMapping("/storage/usage") + public ResponseEntity> getStorageUsage( + @RequestHeader("Authorization") String tokenHeader) { + + try { + Long userId = getUserIdFromToken(tokenHeader); + long usage = fileEntityService.getUserStorageUsed(userId); + + return ResponseEntity.ok(FileApiResponse.success(usage)); + + } catch (NotFoundAuthToken e) { + return ResponseEntity.status(401) + .body(FileApiResponse.error("Authentication required")); + } catch (Exception e) { + log.error("Error getting storage usage", e); + return ResponseEntity.badRequest() + .body(FileApiResponse.error("Failed to get storage usage: " + e.getMessage())); + } + } + + /** + * Пометить файл как удаленный + */ + @DeleteMapping("/{fileId}") + public ResponseEntity> deleteFile( + @PathVariable String fileId, + @RequestHeader("Authorization") String tokenHeader) { + + try { + Long userId = getUserIdFromToken(tokenHeader); + FileEntityResponse fileInfo = fileEntityService.getById(fileId); + + if (!fileInfo.getUserId().equals(userId)) { + return ResponseEntity.status(403) + .body(FileApiResponse.error("Access denied")); + } + + fileEntityService.markAsDeleted(fileId); + + return ResponseEntity.ok(FileApiResponse.success( + "File marked as deleted", null)); + + } catch (NotFoundAuthToken e) { + return ResponseEntity.status(401) + .body(FileApiResponse.error("Authentication required")); + } catch (Exception e) { + log.error("Error deleting file", e); + return ResponseEntity.badRequest() + .body(FileApiResponse.error("Failed to delete file: " + e.getMessage())); + } + } + + private Long getUserIdFromToken(String tokenHeader) { + String token = tokenHeader.replace("Bearer ", ""); + AuthToken authToken = authTokenRepository.findByToken(token) + .orElseThrow(() -> new NotFoundAuthToken("Token not found")); + return authToken.getUser().getId(); + } +} diff --git a/src/main/java/ru/soune/no_copy/dto/file/FileEntityResponse.java b/src/main/java/ru/soune/no_copy/dto/file/FileEntityResponse.java new file mode 100644 index 0000000..ca96341 --- /dev/null +++ b/src/main/java/ru/soune/no_copy/dto/file/FileEntityResponse.java @@ -0,0 +1,33 @@ +package ru.soune.no_copy.dto.file; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import ru.soune.no_copy.entity.file.FileStatus; + +import java.time.LocalDateTime; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class FileEntityResponse { + + private String id; + private Long userId; + private String originalFileName; + private String storedFileName; + private String filePath; + private Long fileSize; + private String mimeType; + private String fileExtension; + private String checksum; + private String uploadSessionId; + private FileStatus status; + private LocalDateTime createdAt; + private LocalDateTime updatedAt; + private String formattedSize; + private String downloadUrl; + private boolean existsOnDisk; +} diff --git a/src/main/java/ru/soune/no_copy/dto/file/FileListResponse.java b/src/main/java/ru/soune/no_copy/dto/file/FileListResponse.java new file mode 100644 index 0000000..8c2c503 --- /dev/null +++ b/src/main/java/ru/soune/no_copy/dto/file/FileListResponse.java @@ -0,0 +1,22 @@ +package ru.soune.no_copy.dto.file; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class FileListResponse { + + private List files; + private int totalCount; + private long totalSize; + private String formattedTotalSize; + private int page; + private int pageSize; +} diff --git a/src/main/java/ru/soune/no_copy/entity/file/FileEntity.java b/src/main/java/ru/soune/no_copy/entity/file/FileEntity.java new file mode 100644 index 0000000..abe0e9d --- /dev/null +++ b/src/main/java/ru/soune/no_copy/entity/file/FileEntity.java @@ -0,0 +1,78 @@ +package ru.soune.no_copy.entity.file; + +import jakarta.persistence.*; +import lombok.*; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "file_entities") +@EntityListeners(AuditingEntityListener.class) +public class FileEntity { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private String id; + + @Column(name = "user_id", nullable = false) + private Long userId; + + @Column(name = "original_file_name", nullable = false) + private String originalFileName; + + @Column(name = "stored_file_name", nullable = false) + private String storedFileName; + + @Column(name = "file_path", nullable = false, unique = true) + private String filePath; + + @Column(name = "file_size", nullable = false) + private Long fileSize; + + @Column(name = "mime_type") + private String mimeType; + + @Column(name = "file_extension") + private String fileExtension; + + @Column(name = "checksum") + private String checksum; + + @Column(name = "upload_session_id") + private String uploadSessionId; + + @Enumerated(EnumType.STRING) + @Column(name = "status") + private FileStatus status; + + @CreatedDate + @Column(name = "created_at", updatable = false) + private LocalDateTime createdAt; + + @LastModifiedDate + @Column(name = "updated_at") + private LocalDateTime updatedAt; + + @PrePersist + public void prePersist() { + if (this.status == null) { + this.status = FileStatus.ACTIVE; + } + if (this.createdAt == null) { + this.createdAt = LocalDateTime.now(); + } + this.updatedAt = LocalDateTime.now(); + } + + @PreUpdate + public void preUpdate() { + this.updatedAt = LocalDateTime.now(); + } +} diff --git a/src/main/java/ru/soune/no_copy/entity/file/FileStatus.java b/src/main/java/ru/soune/no_copy/entity/file/FileStatus.java new file mode 100644 index 0000000..e84fc00 --- /dev/null +++ b/src/main/java/ru/soune/no_copy/entity/file/FileStatus.java @@ -0,0 +1,8 @@ +package ru.soune.no_copy.entity.file; + +public enum FileStatus { + ACTIVE, + DELETED, + PROCESSING, + ERROR +} diff --git a/src/main/java/ru/soune/no_copy/exception/FileEntityNotFoundException.java b/src/main/java/ru/soune/no_copy/exception/FileEntityNotFoundException.java new file mode 100644 index 0000000..8b5fd82 --- /dev/null +++ b/src/main/java/ru/soune/no_copy/exception/FileEntityNotFoundException.java @@ -0,0 +1,11 @@ +package ru.soune.no_copy.exception; + +public class FileEntityNotFoundException extends RuntimeException { + public FileEntityNotFoundException(String fileId) { + super("FileEntity not found with ID: " + fileId); + } + + public FileEntityNotFoundException(String message, Throwable cause) { + super(message, cause); + } +} \ No newline at end of file diff --git a/src/main/java/ru/soune/no_copy/repository/FileEntityRepository.java b/src/main/java/ru/soune/no_copy/repository/FileEntityRepository.java new file mode 100644 index 0000000..41e2781 --- /dev/null +++ b/src/main/java/ru/soune/no_copy/repository/FileEntityRepository.java @@ -0,0 +1,33 @@ +package ru.soune.no_copy.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; +import ru.soune.no_copy.entity.file.FileEntity; +import ru.soune.no_copy.entity.file.FileStatus; + +import java.util.List; +import java.util.Optional; + +@Repository +public interface FileEntityRepository extends JpaRepository { + + List findByUserId(Long userId); + + List findByUserIdAndStatus(Long userId, FileStatus status); + + Optional findByFilePath(String filePath); + + Optional findByUploadSessionId(String uploadSessionId); + + boolean existsByFilePath(String filePath); + + @Query("SELECT SUM(f.fileSize) FROM FileEntity f WHERE f.userId = :userId AND f.status = 'ACTIVE'") + Long getTotalSizeByUserId(@Param("userId") Long userId); + + @Query("SELECT f FROM FileEntity f WHERE f.userId = :userId AND f.originalFileName LIKE %:keyword%") + List searchByFileName(@Param("userId") Long userId, @Param("keyword") String keyword); + + long countByUserId(Long userId); +} diff --git a/src/main/java/ru/soune/no_copy/service/file/FileEntityService.java b/src/main/java/ru/soune/no_copy/service/file/FileEntityService.java new file mode 100644 index 0000000..2a745a9 --- /dev/null +++ b/src/main/java/ru/soune/no_copy/service/file/FileEntityService.java @@ -0,0 +1,277 @@ +package ru.soune.no_copy.service.file; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import ru.soune.no_copy.dto.file.FileEntityResponse; +import ru.soune.no_copy.dto.file.FileListResponse; +import ru.soune.no_copy.entity.file.FileEntity; +import ru.soune.no_copy.entity.file.FileStatus; +import ru.soune.no_copy.entity.file.FileUploadSession; +import ru.soune.no_copy.exception.FileEntityNotFoundException; +import ru.soune.no_copy.repository.FileEntityRepository; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.time.LocalDateTime; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Service +@RequiredArgsConstructor +public class FileEntityService { + + private final FileEntityRepository fileEntityRepository; + + /** + * Создает FileEntity на основе завершенной сессии загрузки + */ + @Transactional + public FileEntity createFromUploadSession(FileUploadSession session, String checksum) { + log.info("Creating FileEntity for upload session: {}", session.getUploadId()); + + try { + Path filePath = Paths.get(session.getFilePath()); + + if (!Files.exists(filePath)) { + throw new IOException("File not found on disk: " + filePath); + } + + long fileSize = Files.size(filePath); + String originalName = session.getFileName(); + String extension = extractFileExtension(originalName); + String storedName = filePath.getFileName().toString(); + + FileEntity fileEntity = FileEntity.builder() + .userId(session.getUserId()) + .originalFileName(originalName) + .storedFileName(storedName) + .filePath(session.getFilePath()) + .fileSize(fileSize) + .mimeType(session.getFileType()) + .fileExtension(extension) + .checksum(checksum) + .uploadSessionId(session.getUploadId()) + .status(FileStatus.ACTIVE) + .build(); + + FileEntity saved = fileEntityRepository.save(fileEntity); + log.info("FileEntity created successfully: {} (size: {} bytes)", + saved.getId(), fileSize); + + return saved; + + } catch (IOException e) { + log.error("Failed to create FileEntity for session {}: {}", + session.getUploadId(), e.getMessage(), e); + throw new RuntimeException("Failed to create file entity: " + e.getMessage(), e); + } + } + + /** + * Извлекает расширение файла из имени + */ + private String extractFileExtension(String fileName) { + int dotIndex = fileName.lastIndexOf('.'); + if (dotIndex > 0 && dotIndex < fileName.length() - 1) { + return fileName.substring(dotIndex + 1).toLowerCase(); + } + return ""; + } + + /** + * Получает FileEntity по ID + */ + @Transactional(readOnly = true) + public FileEntityResponse getById(String fileId) { + FileEntity fileEntity = fileEntityRepository.findById(fileId) + .orElseThrow(() -> new FileEntityNotFoundException(fileId)); + + return convertToResponse(fileEntity); + } + + /** + * Получает FileEntity по ID сессии загрузки + */ + @Transactional(readOnly = true) + public FileEntityResponse getByUploadSessionId(String uploadSessionId) { + FileEntity fileEntity = fileEntityRepository.findByUploadSessionId(uploadSessionId) + .orElseThrow(() -> new FileEntityNotFoundException( + "Not found for upload session: " + uploadSessionId)); + + return convertToResponse(fileEntity); + } + + /** + * Получает FileEntity по пути файла + */ + @Transactional(readOnly = true) + public FileEntityResponse getByFilePath(String filePath) { + FileEntity fileEntity = fileEntityRepository.findByFilePath(filePath) + .orElseThrow(() -> new FileEntityNotFoundException("Path: " + filePath)); + + return convertToResponse(fileEntity); + } + + /** + * Получает все файлы пользователя + */ + @Transactional(readOnly = true) + public FileListResponse getAllUserFiles(Long userId) { + List fileEntities = fileEntityRepository.findByUserIdAndStatus( + userId, FileStatus.ACTIVE); + + List files = fileEntities.stream() + .map(this::convertToResponse) + .collect(Collectors.toList()); + + long totalSize = fileEntities.stream() + .mapToLong(FileEntity::getFileSize) + .sum(); + + return FileListResponse.builder() + .files(files) + .totalCount(files.size()) + .totalSize(totalSize) + .formattedTotalSize(formatFileSize(totalSize)) + .page(1) + .pageSize(files.size()) + .build(); + } + + /** + * Получает файлы пользователя с пагинацией + */ + @Transactional(readOnly = true) + public FileListResponse getUserFiles(Long userId, int page, int pageSize) { + List allFiles = fileEntityRepository.findByUserIdAndStatus( + userId, FileStatus.ACTIVE); + + int start = (page - 1) * pageSize; + int end = Math.min(start + pageSize, allFiles.size()); + + if (start >= allFiles.size()) { + return FileListResponse.builder() + .files(List.of()) + .totalCount(allFiles.size()) + .totalSize(0) + .formattedTotalSize("0 B") + .page(page) + .pageSize(pageSize) + .build(); + } + + List pageFiles = allFiles.subList(start, end); + + List files = pageFiles.stream() + .map(this::convertToResponse) + .collect(Collectors.toList()); + + long totalSize = allFiles.stream() + .mapToLong(FileEntity::getFileSize) + .sum(); + + return FileListResponse.builder() + .files(files) + .totalCount(allFiles.size()) + .totalSize(totalSize) + .formattedTotalSize(formatFileSize(totalSize)) + .page(page) + .pageSize(pageSize) + .build(); + } + + /** + * Помечает файл как удаленный (мягкое удаление) + */ + @Transactional + public void markAsDeleted(String fileId) { + FileEntity fileEntity = fileEntityRepository.findById(fileId) + .orElseThrow(() -> new FileEntityNotFoundException(fileId)); + + fileEntity.setStatus(FileStatus.DELETED); + fileEntity.setUpdatedAt(LocalDateTime.now()); + fileEntityRepository.save(fileEntity); + + log.info("FileEntity marked as deleted: {}", fileId); + } + + /** + * Получает общий размер файлов пользователя + */ + @Transactional(readOnly = true) + public long getUserStorageUsed(Long userId) { + Long totalSize = fileEntityRepository.getTotalSizeByUserId(userId); + return totalSize != null ? totalSize : 0L; + } + + /** + * Поиск файлов пользователя по имени + */ + @Transactional(readOnly = true) + public List searchFiles(Long userId, String query) { + List files = fileEntityRepository.searchByFileName(userId, query); + + return files.stream() + .filter(f -> f.getStatus() == FileStatus.ACTIVE) + .map(this::convertToResponse) + .collect(Collectors.toList()); + } + + /** + * Проверяет, существует ли файл на диске + */ + private boolean checkFileExistsOnDisk(String filePath) { + try { + return Files.exists(Paths.get(filePath)); + } catch (Exception e) { + log.warn("Error checking file existence: {}", filePath, e); + return false; + } + } + + /** + * Конвертирует FileEntity в DTO + */ + private FileEntityResponse convertToResponse(FileEntity fileEntity) { + boolean existsOnDisk = checkFileExistsOnDisk(fileEntity.getFilePath()); + + return FileEntityResponse.builder() + .id(fileEntity.getId()) + .userId(fileEntity.getUserId()) + .originalFileName(fileEntity.getOriginalFileName()) + .storedFileName(fileEntity.getStoredFileName()) + .filePath(fileEntity.getFilePath()) + .fileSize(fileEntity.getFileSize()) + .mimeType(fileEntity.getMimeType()) + .fileExtension(fileEntity.getFileExtension()) + .checksum(fileEntity.getChecksum()) + .uploadSessionId(fileEntity.getUploadSessionId()) + .status(fileEntity.getStatus()) + .createdAt(fileEntity.getCreatedAt()) + .updatedAt(fileEntity.getUpdatedAt()) + .formattedSize(formatFileSize(fileEntity.getFileSize())) + .downloadUrl("/api/files/download/" + fileEntity.getId()) + .existsOnDisk(existsOnDisk) + .build(); + } + + /** + * Форматирует размер файла в читаемый вид + */ + private String formatFileSize(long size) { + if (size < 1024) { + return size + " B"; + } else if (size < 1024 * 1024) { + return String.format("%.1f KB", size / 1024.0); + } else if (size < 1024 * 1024 * 1024) { + return String.format("%.1f MB", size / (1024.0 * 1024.0)); + } else { + return String.format("%.1f GB", size / (1024.0 * 1024.0 * 1024.0)); + } + } +} \ No newline at end of file diff --git a/src/main/java/ru/soune/no_copy/service/file/FileUploadServiceImpl.java b/src/main/java/ru/soune/no_copy/service/file/FileUploadServiceImpl.java index 26bebb7..d01a2f0 100644 --- a/src/main/java/ru/soune/no_copy/service/file/FileUploadServiceImpl.java +++ b/src/main/java/ru/soune/no_copy/service/file/FileUploadServiceImpl.java @@ -3,6 +3,7 @@ package ru.soune.no_copy.service.file; import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -56,6 +57,9 @@ public class FileUploadServiceImpl implements FileUploadService { private Path storageRoot; + @Autowired + private FileEntityService fileEntityService; + @PostConstruct public void init() { try { @@ -328,14 +332,46 @@ public class FileUploadServiceImpl implements FileUploadService { } } +// private void assembleFile(FileUploadSession session) throws IOException { +// log.info("Starting file assembly for session: {} ({})", +// session.getUploadId(), session.getFileName()); +// +// Path finalFilePath = null; +// +// try { +// finalFilePath = prepareFinalFile(session); +// +// validateAllChunksExist(session); +// +// mergeChunksToFile(session, finalFilePath); +// +// validateFinalFile(session, finalFilePath); +// +// updateSessionOnSuccess(session, finalFilePath); +// +// cleanupSessionFiles(session); +// +// log.info("File assembly completed: {} -> {} ({} bytes)", +// session.getFileName(), finalFilePath, session.getFileSize()); +// +// } catch (Exception e) { +// if (finalFilePath != null) { +// Files.deleteIfExists(finalFilePath); +// } +// throw e; +// } +// } + private void assembleFile(FileUploadSession session) throws IOException { log.info("Starting file assembly for session: {} ({})", session.getUploadId(), session.getFileName()); Path finalFilePath = null; + String checksum = null; try { finalFilePath = prepareFinalFile(session); + log.info("Final file path: {}", finalFilePath); validateAllChunksExist(session); @@ -343,18 +379,48 @@ public class FileUploadServiceImpl implements FileUploadService { validateFinalFile(session, finalFilePath); - updateSessionOnSuccess(session, finalFilePath); + checksum = calculateChecksum(finalFilePath); + log.debug("File checksum calculated: {}", checksum); + + session.setFilePath(finalFilePath.toString()); + session.setChecksum(checksum); + session.setStatus(UploadStatus.COMPLETED); + session.setCompletedAt(LocalDateTime.now()); + sessionRepository.save(session); + log.info("Upload session updated to COMPLETED: {}", session.getUploadId()); + + try { + fileEntityService.createFromUploadSession(session, checksum); + log.info("FileEntity successfully created for session: {}", + session.getUploadId()); + } catch (Exception e) { + log.error("Failed to create FileEntity for session {} (file uploaded, but metadata not saved): {}", + session.getUploadId(), e.getMessage()); + } cleanupSessionFiles(session); - log.info("File assembly completed: {} -> {} ({} bytes)", + log.info("File assembly completed successfully: {} -> {} ({} bytes)", session.getFileName(), finalFilePath, session.getFileSize()); } catch (Exception e) { + log.error("File assembly failed for session {}: {}", + session.getUploadId(), e.getMessage(), e); + if (finalFilePath != null) { - Files.deleteIfExists(finalFilePath); + try { + Files.deleteIfExists(finalFilePath); + log.debug("Cleaned up partial file: {}", finalFilePath); + } catch (IOException ioException) { + log.warn("Failed to cleanup partial file: {}", finalFilePath, ioException); + } } - throw e; + + session.setStatus(UploadStatus.FAILED); + session.setLastError(e.getMessage()); + sessionRepository.save(session); + + throw new IOException("File assembly failed: " + e.getMessage(), e); } } diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 2880f4c..08326e1 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -31,6 +31,13 @@ file: temp-ttl-hours: ${TEMP_TTL_HOURS:72} # 3 дня session-expiry-hours: ${SESSION_EXPIRY_HOURS:24} +security: + cors: + allowed-origins: "*" + allowed-methods: GET,POST,PUT,DELETE,OPTIONS + allowed-headers: "*" + allow-credentials: true + server: port: ${SERVER_PORT:8080} From 7e2dd4a6546041e1251697fb4408fc94b4ab8367 Mon Sep 17 00:00:00 2001 From: vladp Date: Wed, 17 Dec 2025 22:37:46 +0700 Subject: [PATCH 2/2] fix path --- .../NoCopyApplication.java | 2 +- .../configuration/ApplicationConfig.java | 2 +- .../configuration/JacksonConfig.java | 2 +- .../configuration/JpaConfiguration.java | 2 +- .../configuration/SubscriptionConfig.java | 2 +- .../configuration/file/AsyncConfig.java | 2 +- .../controller/AuthController.java | 18 ++++++------ .../controller/HealtCheckController.java | 3 +- .../controller/UserContentController.java | 2 +- .../controller/UserController.java | 24 ++++++++-------- .../file/FileDownloadController.java | 12 ++++---- .../controller/file/FileEntityController.java | 16 +++++------ .../controller/file/FileUploadController.java | 28 +++++++++---------- .../{no_copy => nocopy}/dto/AuthResponse.java | 2 +- .../dto/ChangePasswordRequest.java | 2 +- .../{no_copy => nocopy}/dto/LoginRequest.java | 2 +- .../dto/LoginResponse.java | 3 +- .../dto/RegisterRequest.java | 6 ++-- .../dto/UserContentDTO.java | 2 +- .../dto/UserContentRequest.java | 2 +- .../dto/UserContentResponse.java | 6 ++-- .../dto/UserContentUpdateRequest.java | 2 +- .../{no_copy => nocopy}/dto/UserDTO.java | 6 ++-- .../{no_copy => nocopy}/dto/UserRequest.java | 5 ++-- .../dto/file/FileApiResponse.java | 2 +- .../dto/file/FileEntityResponse.java | 4 +-- .../dto/file/FileListResponse.java | 2 +- .../dto/file/InitUploadRequest.java | 2 +- .../dto/file/UploadProgressResponse.java | 6 ++-- .../{no_copy => nocopy}/entity/AuthToken.java | 2 +- .../entity/BaseEntity.java | 2 +- .../entity/ContentStatus.java | 2 +- .../entity/GenderType.java | 2 +- .../entity/ImageProtection.java | 2 +- .../entity/SubscriptionType.java | 2 +- .../{no_copy => nocopy}/entity/User.java | 2 +- .../entity/UserAction.java | 2 +- .../entity/UserContent.java | 4 +-- .../{no_copy => nocopy}/entity/Violation.java | 2 +- .../entity/file/FileEntity.java | 2 +- .../entity/file/FileStatus.java | 2 +- .../entity/file/FileType.java | 2 +- .../entity/file/FileUploadSession.java | 2 +- .../entity/file/UploadStatus.java | 2 +- .../exception/ChunkSizeExceededException.java | 2 +- .../exception/ContentNotFoundException.java | 2 +- .../FileEntityNotFoundException.java | 2 +- .../exception/FileIntegrityException.java | 2 +- .../exception/FileUploadException.java | 2 +- .../exception/InvalidPasswordException.java | 2 +- .../exception/InvalidUserEmail.java | 2 +- .../exception/NotFoundAuthToken.java | 2 +- .../NotValidationPasswordException.java | 2 +- .../exception/TokenNotFoundException.java | 2 +- .../UploadSessionNotFoundException.java | 2 +- .../exception/UserAlreadyExistsException.java | 2 +- .../exception/UserNotFoundException.java | 2 +- .../handler/GlobalExceptionHandler.java | 4 +-- .../handler/JwtTokenProvider.java | 2 +- .../mapper/UserContentMapper.java | 6 ++-- .../mapper/UserMapper.java | 6 ++-- .../repository/AuthTokenRepository.java | 4 +-- .../repository/FileEntityRepository.java | 6 ++-- .../FileUploadSessionRepository.java | 6 ++-- .../repository/UserContentRepository.java | 6 ++-- .../repository/UserRepository.java | 4 +-- .../service/AuthService.java | 21 +++++++------- .../service/UserContentService.java | 22 +++++++-------- .../service/UserService.java | 18 ++++++------ .../service/file/FileCleanupService.java | 2 +- .../service/file/FileEntityService.java | 16 +++++------ .../service/file/FileUploadService.java | 6 ++-- .../service/file/FileUploadServiceImpl.java | 16 +++++------ .../service/AuthServiceTest.java | 20 ++++++------- 74 files changed, 194 insertions(+), 198 deletions(-) rename src/main/java/ru/soune/{no_copy => nocopy}/NoCopyApplication.java (91%) rename src/main/java/ru/soune/{no_copy => nocopy}/configuration/ApplicationConfig.java (92%) rename src/main/java/ru/soune/{no_copy => nocopy}/configuration/JacksonConfig.java (97%) rename src/main/java/ru/soune/{no_copy => nocopy}/configuration/JpaConfiguration.java (83%) rename src/main/java/ru/soune/{no_copy => nocopy}/configuration/SubscriptionConfig.java (96%) rename src/main/java/ru/soune/{no_copy => nocopy}/configuration/file/AsyncConfig.java (94%) rename src/main/java/ru/soune/{no_copy => nocopy}/controller/AuthController.java (79%) rename src/main/java/ru/soune/{no_copy => nocopy}/controller/HealtCheckController.java (79%) rename src/main/java/ru/soune/{no_copy => nocopy}/controller/UserContentController.java (87%) rename src/main/java/ru/soune/{no_copy => nocopy}/controller/UserController.java (87%) rename src/main/java/ru/soune/{no_copy => nocopy}/controller/file/FileDownloadController.java (95%) rename src/main/java/ru/soune/{no_copy => nocopy}/controller/file/FileEntityController.java (95%) rename src/main/java/ru/soune/{no_copy => nocopy}/controller/file/FileUploadController.java (91%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/AuthResponse.java (85%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/ChangePasswordRequest.java (89%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/LoginRequest.java (94%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/LoginResponse.java (76%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/RegisterRequest.java (88%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/UserContentDTO.java (88%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/UserContentRequest.java (93%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/UserContentResponse.java (70%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/UserContentUpdateRequest.java (93%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/UserDTO.java (81%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/UserRequest.java (83%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/file/FileApiResponse.java (96%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/file/FileEntityResponse.java (89%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/file/FileListResponse.java (92%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/file/InitUploadRequest.java (94%) rename src/main/java/ru/soune/{no_copy => nocopy}/dto/file/UploadProgressResponse.java (88%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/AuthToken.java (97%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/BaseEntity.java (95%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/ContentStatus.java (89%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/GenderType.java (57%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/ImageProtection.java (97%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/SubscriptionType.java (76%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/User.java (98%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/UserAction.java (97%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/UserContent.java (96%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/Violation.java (97%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/file/FileEntity.java (98%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/file/FileStatus.java (67%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/file/FileType.java (88%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/file/FileUploadSession.java (98%) rename src/main/java/ru/soune/{no_copy => nocopy}/entity/file/UploadStatus.java (72%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/ChunkSizeExceededException.java (86%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/ContentNotFoundException.java (80%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/FileEntityNotFoundException.java (89%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/FileIntegrityException.java (80%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/FileUploadException.java (87%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/InvalidPasswordException.java (80%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/InvalidUserEmail.java (79%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/NotFoundAuthToken.java (79%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/NotValidationPasswordException.java (82%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/TokenNotFoundException.java (80%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/UploadSessionNotFoundException.java (84%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/UserAlreadyExistsException.java (81%) rename src/main/java/ru/soune/{no_copy => nocopy}/exception/UserNotFoundException.java (80%) rename src/main/java/ru/soune/{no_copy => nocopy}/handler/GlobalExceptionHandler.java (97%) rename src/main/java/ru/soune/{no_copy => nocopy}/handler/JwtTokenProvider.java (73%) rename src/main/java/ru/soune/{no_copy => nocopy}/mapper/UserContentMapper.java (79%) rename src/main/java/ru/soune/{no_copy => nocopy}/mapper/UserMapper.java (77%) rename src/main/java/ru/soune/{no_copy => nocopy}/repository/AuthTokenRepository.java (83%) rename src/main/java/ru/soune/{no_copy => nocopy}/repository/FileEntityRepository.java (89%) rename src/main/java/ru/soune/{no_copy => nocopy}/repository/FileUploadSessionRepository.java (88%) rename src/main/java/ru/soune/{no_copy => nocopy}/repository/UserContentRepository.java (81%) rename src/main/java/ru/soune/{no_copy => nocopy}/repository/UserRepository.java (77%) rename src/main/java/ru/soune/{no_copy => nocopy}/service/AuthService.java (84%) rename src/main/java/ru/soune/{no_copy => nocopy}/service/UserContentService.java (81%) rename src/main/java/ru/soune/{no_copy => nocopy}/service/UserService.java (86%) rename src/main/java/ru/soune/{no_copy => nocopy}/service/file/FileCleanupService.java (98%) rename src/main/java/ru/soune/{no_copy => nocopy}/service/file/FileEntityService.java (95%) rename src/main/java/ru/soune/{no_copy => nocopy}/service/file/FileUploadService.java (80%) rename src/main/java/ru/soune/{no_copy => nocopy}/service/file/FileUploadServiceImpl.java (98%) rename src/test/java/ru/soune/{no_copy => nocopy}/service/AuthServiceTest.java (89%) diff --git a/src/main/java/ru/soune/no_copy/NoCopyApplication.java b/src/main/java/ru/soune/nocopy/NoCopyApplication.java similarity index 91% rename from src/main/java/ru/soune/no_copy/NoCopyApplication.java rename to src/main/java/ru/soune/nocopy/NoCopyApplication.java index 74bec20..fd6b0f2 100644 --- a/src/main/java/ru/soune/no_copy/NoCopyApplication.java +++ b/src/main/java/ru/soune/nocopy/NoCopyApplication.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy; +package ru.soune.nocopy; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/src/main/java/ru/soune/no_copy/configuration/ApplicationConfig.java b/src/main/java/ru/soune/nocopy/configuration/ApplicationConfig.java similarity index 92% rename from src/main/java/ru/soune/no_copy/configuration/ApplicationConfig.java rename to src/main/java/ru/soune/nocopy/configuration/ApplicationConfig.java index 8b0409b..85ae0b8 100644 --- a/src/main/java/ru/soune/no_copy/configuration/ApplicationConfig.java +++ b/src/main/java/ru/soune/nocopy/configuration/ApplicationConfig.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.configuration; +package ru.soune.nocopy.configuration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Bean; diff --git a/src/main/java/ru/soune/no_copy/configuration/JacksonConfig.java b/src/main/java/ru/soune/nocopy/configuration/JacksonConfig.java similarity index 97% rename from src/main/java/ru/soune/no_copy/configuration/JacksonConfig.java rename to src/main/java/ru/soune/nocopy/configuration/JacksonConfig.java index 0f726fb..99c5c00 100644 --- a/src/main/java/ru/soune/no_copy/configuration/JacksonConfig.java +++ b/src/main/java/ru/soune/nocopy/configuration/JacksonConfig.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.configuration; +package ru.soune.nocopy.configuration; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; diff --git a/src/main/java/ru/soune/no_copy/configuration/JpaConfiguration.java b/src/main/java/ru/soune/nocopy/configuration/JpaConfiguration.java similarity index 83% rename from src/main/java/ru/soune/no_copy/configuration/JpaConfiguration.java rename to src/main/java/ru/soune/nocopy/configuration/JpaConfiguration.java index 56ae18b..f62ccde 100644 --- a/src/main/java/ru/soune/no_copy/configuration/JpaConfiguration.java +++ b/src/main/java/ru/soune/nocopy/configuration/JpaConfiguration.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.configuration; +package ru.soune.nocopy.configuration; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; diff --git a/src/main/java/ru/soune/no_copy/configuration/SubscriptionConfig.java b/src/main/java/ru/soune/nocopy/configuration/SubscriptionConfig.java similarity index 96% rename from src/main/java/ru/soune/no_copy/configuration/SubscriptionConfig.java rename to src/main/java/ru/soune/nocopy/configuration/SubscriptionConfig.java index 7eb41ec..198a544 100644 --- a/src/main/java/ru/soune/no_copy/configuration/SubscriptionConfig.java +++ b/src/main/java/ru/soune/nocopy/configuration/SubscriptionConfig.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.configuration; +package ru.soune.nocopy.configuration; import lombok.Getter; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/src/main/java/ru/soune/no_copy/configuration/file/AsyncConfig.java b/src/main/java/ru/soune/nocopy/configuration/file/AsyncConfig.java similarity index 94% rename from src/main/java/ru/soune/no_copy/configuration/file/AsyncConfig.java rename to src/main/java/ru/soune/nocopy/configuration/file/AsyncConfig.java index bd75b72..6882014 100644 --- a/src/main/java/ru/soune/no_copy/configuration/file/AsyncConfig.java +++ b/src/main/java/ru/soune/nocopy/configuration/file/AsyncConfig.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.configuration.file; +package ru.soune.nocopy.configuration.file; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/ru/soune/no_copy/controller/AuthController.java b/src/main/java/ru/soune/nocopy/controller/AuthController.java similarity index 79% rename from src/main/java/ru/soune/no_copy/controller/AuthController.java rename to src/main/java/ru/soune/nocopy/controller/AuthController.java index 764b1a8..e7d46f0 100644 --- a/src/main/java/ru/soune/no_copy/controller/AuthController.java +++ b/src/main/java/ru/soune/nocopy/controller/AuthController.java @@ -1,17 +1,17 @@ -package ru.soune.no_copy.controller; +package ru.soune.nocopy.controller; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import ru.soune.no_copy.dto.AuthResponse; -import ru.soune.no_copy.dto.LoginRequest; -import ru.soune.no_copy.dto.LoginResponse; -import ru.soune.no_copy.dto.RegisterRequest; -import ru.soune.no_copy.entity.AuthToken; -import ru.soune.no_copy.exception.TokenNotFoundException; -import ru.soune.no_copy.repository.AuthTokenRepository; -import ru.soune.no_copy.service.AuthService; +import ru.soune.nocopy.dto.AuthResponse; +import ru.soune.nocopy.dto.LoginRequest; +import ru.soune.nocopy.dto.LoginResponse; +import ru.soune.nocopy.dto.RegisterRequest; +import ru.soune.nocopy.entity.AuthToken; +import ru.soune.nocopy.exception.TokenNotFoundException; +import ru.soune.nocopy.repository.AuthTokenRepository; +import ru.soune.nocopy.service.AuthService; import java.util.Map; import java.util.Optional; diff --git a/src/main/java/ru/soune/no_copy/controller/HealtCheckController.java b/src/main/java/ru/soune/nocopy/controller/HealtCheckController.java similarity index 79% rename from src/main/java/ru/soune/no_copy/controller/HealtCheckController.java rename to src/main/java/ru/soune/nocopy/controller/HealtCheckController.java index 33b6ab9..27cedd1 100644 --- a/src/main/java/ru/soune/no_copy/controller/HealtCheckController.java +++ b/src/main/java/ru/soune/nocopy/controller/HealtCheckController.java @@ -1,6 +1,5 @@ -package ru.soune.no_copy.controller; +package ru.soune.nocopy.controller; -import org.apache.coyote.Response; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/ru/soune/no_copy/controller/UserContentController.java b/src/main/java/ru/soune/nocopy/controller/UserContentController.java similarity index 87% rename from src/main/java/ru/soune/no_copy/controller/UserContentController.java rename to src/main/java/ru/soune/nocopy/controller/UserContentController.java index ea25e8f..51a4d5c 100644 --- a/src/main/java/ru/soune/no_copy/controller/UserContentController.java +++ b/src/main/java/ru/soune/nocopy/controller/UserContentController.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.controller; +package ru.soune.nocopy.controller; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/ru/soune/no_copy/controller/UserController.java b/src/main/java/ru/soune/nocopy/controller/UserController.java similarity index 87% rename from src/main/java/ru/soune/no_copy/controller/UserController.java rename to src/main/java/ru/soune/nocopy/controller/UserController.java index 9f23605..39efe8e 100644 --- a/src/main/java/ru/soune/no_copy/controller/UserController.java +++ b/src/main/java/ru/soune/nocopy/controller/UserController.java @@ -1,19 +1,19 @@ -package ru.soune.no_copy.controller; +package ru.soune.nocopy.controller; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import ru.soune.no_copy.dto.ChangePasswordRequest; -import ru.soune.no_copy.dto.UserDTO; -import ru.soune.no_copy.dto.UserRequest; -import ru.soune.no_copy.entity.AuthToken; -import ru.soune.no_copy.entity.User; -import ru.soune.no_copy.exception.InvalidUserEmail; -import ru.soune.no_copy.exception.NotFoundAuthToken; -import ru.soune.no_copy.mapper.UserMapper; -import ru.soune.no_copy.repository.AuthTokenRepository; -import ru.soune.no_copy.repository.UserRepository; -import ru.soune.no_copy.service.UserService; +import ru.soune.nocopy.dto.ChangePasswordRequest; +import ru.soune.nocopy.dto.UserDTO; +import ru.soune.nocopy.dto.UserRequest; +import ru.soune.nocopy.entity.AuthToken; +import ru.soune.nocopy.entity.User; +import ru.soune.nocopy.exception.InvalidUserEmail; +import ru.soune.nocopy.exception.NotFoundAuthToken; +import ru.soune.nocopy.mapper.UserMapper; +import ru.soune.nocopy.repository.AuthTokenRepository; +import ru.soune.nocopy.repository.UserRepository; +import ru.soune.nocopy.service.UserService; import java.util.List; import java.util.Optional; diff --git a/src/main/java/ru/soune/no_copy/controller/file/FileDownloadController.java b/src/main/java/ru/soune/nocopy/controller/file/FileDownloadController.java similarity index 95% rename from src/main/java/ru/soune/no_copy/controller/file/FileDownloadController.java rename to src/main/java/ru/soune/nocopy/controller/file/FileDownloadController.java index 6be2c46..6339094 100644 --- a/src/main/java/ru/soune/no_copy/controller/file/FileDownloadController.java +++ b/src/main/java/ru/soune/nocopy/controller/file/FileDownloadController.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.controller.file; +package ru.soune.nocopy.controller.file; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -8,11 +8,11 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import ru.soune.no_copy.dto.file.FileEntityResponse; -import ru.soune.no_copy.entity.AuthToken; -import ru.soune.no_copy.exception.NotFoundAuthToken; -import ru.soune.no_copy.repository.AuthTokenRepository; -import ru.soune.no_copy.service.file.FileEntityService; +import ru.soune.nocopy.dto.file.FileEntityResponse; +import ru.soune.nocopy.entity.AuthToken; +import ru.soune.nocopy.exception.NotFoundAuthToken; +import ru.soune.nocopy.repository.AuthTokenRepository; +import ru.soune.nocopy.service.file.FileEntityService; import java.io.IOException; import java.nio.file.Files; diff --git a/src/main/java/ru/soune/no_copy/controller/file/FileEntityController.java b/src/main/java/ru/soune/nocopy/controller/file/FileEntityController.java similarity index 95% rename from src/main/java/ru/soune/no_copy/controller/file/FileEntityController.java rename to src/main/java/ru/soune/nocopy/controller/file/FileEntityController.java index 77987a3..25d19d1 100644 --- a/src/main/java/ru/soune/no_copy/controller/file/FileEntityController.java +++ b/src/main/java/ru/soune/nocopy/controller/file/FileEntityController.java @@ -1,16 +1,16 @@ -package ru.soune.no_copy.controller.file; +package ru.soune.nocopy.controller.file; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import ru.soune.no_copy.dto.file.FileApiResponse; -import ru.soune.no_copy.dto.file.FileEntityResponse; -import ru.soune.no_copy.dto.file.FileListResponse; -import ru.soune.no_copy.entity.AuthToken; -import ru.soune.no_copy.exception.NotFoundAuthToken; -import ru.soune.no_copy.repository.AuthTokenRepository; -import ru.soune.no_copy.service.file.FileEntityService; +import ru.soune.nocopy.dto.file.FileApiResponse; +import ru.soune.nocopy.dto.file.FileEntityResponse; +import ru.soune.nocopy.dto.file.FileListResponse; +import ru.soune.nocopy.entity.AuthToken; +import ru.soune.nocopy.exception.NotFoundAuthToken; +import ru.soune.nocopy.repository.AuthTokenRepository; +import ru.soune.nocopy.service.file.FileEntityService; @Slf4j @RestController diff --git a/src/main/java/ru/soune/no_copy/controller/file/FileUploadController.java b/src/main/java/ru/soune/nocopy/controller/file/FileUploadController.java similarity index 91% rename from src/main/java/ru/soune/no_copy/controller/file/FileUploadController.java rename to src/main/java/ru/soune/nocopy/controller/file/FileUploadController.java index 4f5d1ab..6eab4bb 100644 --- a/src/main/java/ru/soune/no_copy/controller/file/FileUploadController.java +++ b/src/main/java/ru/soune/nocopy/controller/file/FileUploadController.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.controller.file; +package ru.soune.nocopy.controller.file; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -7,19 +7,19 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import ru.soune.no_copy.dto.file.FileApiResponse; -import ru.soune.no_copy.dto.file.InitUploadRequest; -import ru.soune.no_copy.dto.file.UploadProgressResponse; -import ru.soune.no_copy.entity.AuthToken; -import ru.soune.no_copy.entity.file.FileType; -import ru.soune.no_copy.entity.file.FileUploadSession; -import ru.soune.no_copy.entity.file.UploadStatus; -import ru.soune.no_copy.exception.FileUploadException; -import ru.soune.no_copy.exception.NotFoundAuthToken; -import ru.soune.no_copy.exception.UploadSessionNotFoundException; -import ru.soune.no_copy.repository.AuthTokenRepository; -import ru.soune.no_copy.repository.FileUploadSessionRepository; -import ru.soune.no_copy.service.file.FileUploadService; +import ru.soune.nocopy.dto.file.FileApiResponse; +import ru.soune.nocopy.dto.file.InitUploadRequest; +import ru.soune.nocopy.dto.file.UploadProgressResponse; +import ru.soune.nocopy.entity.AuthToken; +import ru.soune.nocopy.entity.file.FileType; +import ru.soune.nocopy.entity.file.FileUploadSession; +import ru.soune.nocopy.entity.file.UploadStatus; +import ru.soune.nocopy.exception.FileUploadException; +import ru.soune.nocopy.exception.NotFoundAuthToken; +import ru.soune.nocopy.exception.UploadSessionNotFoundException; +import ru.soune.nocopy.repository.AuthTokenRepository; +import ru.soune.nocopy.repository.FileUploadSessionRepository; +import ru.soune.nocopy.service.file.FileUploadService; import java.util.*; diff --git a/src/main/java/ru/soune/no_copy/dto/AuthResponse.java b/src/main/java/ru/soune/nocopy/dto/AuthResponse.java similarity index 85% rename from src/main/java/ru/soune/no_copy/dto/AuthResponse.java rename to src/main/java/ru/soune/nocopy/dto/AuthResponse.java index c39301a..168e09a 100644 --- a/src/main/java/ru/soune/no_copy/dto/AuthResponse.java +++ b/src/main/java/ru/soune/nocopy/dto/AuthResponse.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.dto; +package ru.soune.nocopy.dto; import java.time.LocalDateTime; diff --git a/src/main/java/ru/soune/no_copy/dto/ChangePasswordRequest.java b/src/main/java/ru/soune/nocopy/dto/ChangePasswordRequest.java similarity index 89% rename from src/main/java/ru/soune/no_copy/dto/ChangePasswordRequest.java rename to src/main/java/ru/soune/nocopy/dto/ChangePasswordRequest.java index aff7140..204db58 100644 --- a/src/main/java/ru/soune/no_copy/dto/ChangePasswordRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/ChangePasswordRequest.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.dto; +package ru.soune.nocopy.dto; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/java/ru/soune/no_copy/dto/LoginRequest.java b/src/main/java/ru/soune/nocopy/dto/LoginRequest.java similarity index 94% rename from src/main/java/ru/soune/no_copy/dto/LoginRequest.java rename to src/main/java/ru/soune/nocopy/dto/LoginRequest.java index c85fe97..d64fa8b 100644 --- a/src/main/java/ru/soune/no_copy/dto/LoginRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/LoginRequest.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.dto; +package ru.soune.nocopy.dto; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/ru/soune/no_copy/dto/LoginResponse.java b/src/main/java/ru/soune/nocopy/dto/LoginResponse.java similarity index 76% rename from src/main/java/ru/soune/no_copy/dto/LoginResponse.java rename to src/main/java/ru/soune/nocopy/dto/LoginResponse.java index 5fe7d73..5de74ea 100644 --- a/src/main/java/ru/soune/no_copy/dto/LoginResponse.java +++ b/src/main/java/ru/soune/nocopy/dto/LoginResponse.java @@ -1,8 +1,7 @@ -package ru.soune.no_copy.dto; +package ru.soune.nocopy.dto; import lombok.AllArgsConstructor; import lombok.Data; -import ru.soune.no_copy.entity.User; @Data @AllArgsConstructor diff --git a/src/main/java/ru/soune/no_copy/dto/RegisterRequest.java b/src/main/java/ru/soune/nocopy/dto/RegisterRequest.java similarity index 88% rename from src/main/java/ru/soune/no_copy/dto/RegisterRequest.java rename to src/main/java/ru/soune/nocopy/dto/RegisterRequest.java index e08f39b..8d9a88f 100644 --- a/src/main/java/ru/soune/no_copy/dto/RegisterRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/RegisterRequest.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.dto; +package ru.soune.nocopy.dto; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.validation.constraints.Email; @@ -6,8 +6,8 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Past; import jakarta.validation.constraints.Size; import org.springframework.format.annotation.DateTimeFormat; -import ru.soune.no_copy.entity.GenderType; -import ru.soune.no_copy.entity.SubscriptionType; +import ru.soune.nocopy.entity.GenderType; +import ru.soune.nocopy.entity.SubscriptionType; import java.time.LocalDate; diff --git a/src/main/java/ru/soune/no_copy/dto/UserContentDTO.java b/src/main/java/ru/soune/nocopy/dto/UserContentDTO.java similarity index 88% rename from src/main/java/ru/soune/no_copy/dto/UserContentDTO.java rename to src/main/java/ru/soune/nocopy/dto/UserContentDTO.java index 4c9c6f0..934bfda 100644 --- a/src/main/java/ru/soune/no_copy/dto/UserContentDTO.java +++ b/src/main/java/ru/soune/nocopy/dto/UserContentDTO.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.dto; +package ru.soune.nocopy.dto; import lombok.Data; diff --git a/src/main/java/ru/soune/no_copy/dto/UserContentRequest.java b/src/main/java/ru/soune/nocopy/dto/UserContentRequest.java similarity index 93% rename from src/main/java/ru/soune/no_copy/dto/UserContentRequest.java rename to src/main/java/ru/soune/nocopy/dto/UserContentRequest.java index 06ef01e..bd28100 100644 --- a/src/main/java/ru/soune/no_copy/dto/UserContentRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/UserContentRequest.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.dto; +package ru.soune.nocopy.dto; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/ru/soune/no_copy/dto/UserContentResponse.java b/src/main/java/ru/soune/nocopy/dto/UserContentResponse.java similarity index 70% rename from src/main/java/ru/soune/no_copy/dto/UserContentResponse.java rename to src/main/java/ru/soune/nocopy/dto/UserContentResponse.java index d2a817c..8c14615 100644 --- a/src/main/java/ru/soune/no_copy/dto/UserContentResponse.java +++ b/src/main/java/ru/soune/nocopy/dto/UserContentResponse.java @@ -1,7 +1,7 @@ -package ru.soune.no_copy.dto; +package ru.soune.nocopy.dto; -import ru.soune.no_copy.entity.ContentStatus; -import ru.soune.no_copy.entity.file.FileType; +import ru.soune.nocopy.entity.ContentStatus; +import ru.soune.nocopy.entity.file.FileType; import java.time.LocalDateTime; diff --git a/src/main/java/ru/soune/no_copy/dto/UserContentUpdateRequest.java b/src/main/java/ru/soune/nocopy/dto/UserContentUpdateRequest.java similarity index 93% rename from src/main/java/ru/soune/no_copy/dto/UserContentUpdateRequest.java rename to src/main/java/ru/soune/nocopy/dto/UserContentUpdateRequest.java index 8955969..7595b21 100644 --- a/src/main/java/ru/soune/no_copy/dto/UserContentUpdateRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/UserContentUpdateRequest.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.dto; +package ru.soune.nocopy.dto; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/ru/soune/no_copy/dto/UserDTO.java b/src/main/java/ru/soune/nocopy/dto/UserDTO.java similarity index 81% rename from src/main/java/ru/soune/no_copy/dto/UserDTO.java rename to src/main/java/ru/soune/nocopy/dto/UserDTO.java index ba5b278..45c19ee 100644 --- a/src/main/java/ru/soune/no_copy/dto/UserDTO.java +++ b/src/main/java/ru/soune/nocopy/dto/UserDTO.java @@ -1,11 +1,11 @@ -package ru.soune.no_copy.dto; +package ru.soune.nocopy.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import ru.soune.no_copy.entity.GenderType; -import ru.soune.no_copy.entity.SubscriptionType; +import ru.soune.nocopy.entity.GenderType; +import ru.soune.nocopy.entity.SubscriptionType; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/src/main/java/ru/soune/no_copy/dto/UserRequest.java b/src/main/java/ru/soune/nocopy/dto/UserRequest.java similarity index 83% rename from src/main/java/ru/soune/no_copy/dto/UserRequest.java rename to src/main/java/ru/soune/nocopy/dto/UserRequest.java index db8c8fe..c5f1662 100644 --- a/src/main/java/ru/soune/no_copy/dto/UserRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/UserRequest.java @@ -1,14 +1,13 @@ -package ru.soune.no_copy.dto; +package ru.soune.nocopy.dto; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.Past; import jakarta.validation.constraints.Size; import lombok.Data; -import ru.soune.no_copy.entity.GenderType; +import ru.soune.nocopy.entity.GenderType; import java.time.LocalDate; -import java.time.LocalDateTime; @Data public class UserRequest { diff --git a/src/main/java/ru/soune/no_copy/dto/file/FileApiResponse.java b/src/main/java/ru/soune/nocopy/dto/file/FileApiResponse.java similarity index 96% rename from src/main/java/ru/soune/no_copy/dto/file/FileApiResponse.java rename to src/main/java/ru/soune/nocopy/dto/file/FileApiResponse.java index d271a1c..9feb546 100644 --- a/src/main/java/ru/soune/no_copy/dto/file/FileApiResponse.java +++ b/src/main/java/ru/soune/nocopy/dto/file/FileApiResponse.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.dto.file; +package ru.soune.nocopy.dto.file; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/ru/soune/no_copy/dto/file/FileEntityResponse.java b/src/main/java/ru/soune/nocopy/dto/file/FileEntityResponse.java similarity index 89% rename from src/main/java/ru/soune/no_copy/dto/file/FileEntityResponse.java rename to src/main/java/ru/soune/nocopy/dto/file/FileEntityResponse.java index ca96341..3e89725 100644 --- a/src/main/java/ru/soune/no_copy/dto/file/FileEntityResponse.java +++ b/src/main/java/ru/soune/nocopy/dto/file/FileEntityResponse.java @@ -1,10 +1,10 @@ -package ru.soune.no_copy.dto.file; +package ru.soune.nocopy.dto.file; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import ru.soune.no_copy.entity.file.FileStatus; +import ru.soune.nocopy.entity.file.FileStatus; import java.time.LocalDateTime; diff --git a/src/main/java/ru/soune/no_copy/dto/file/FileListResponse.java b/src/main/java/ru/soune/nocopy/dto/file/FileListResponse.java similarity index 92% rename from src/main/java/ru/soune/no_copy/dto/file/FileListResponse.java rename to src/main/java/ru/soune/nocopy/dto/file/FileListResponse.java index 8c2c503..5815a03 100644 --- a/src/main/java/ru/soune/no_copy/dto/file/FileListResponse.java +++ b/src/main/java/ru/soune/nocopy/dto/file/FileListResponse.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.dto.file; +package ru.soune.nocopy.dto.file; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/ru/soune/no_copy/dto/file/InitUploadRequest.java b/src/main/java/ru/soune/nocopy/dto/file/InitUploadRequest.java similarity index 94% rename from src/main/java/ru/soune/no_copy/dto/file/InitUploadRequest.java rename to src/main/java/ru/soune/nocopy/dto/file/InitUploadRequest.java index 044c731..5f43124 100644 --- a/src/main/java/ru/soune/no_copy/dto/file/InitUploadRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/file/InitUploadRequest.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.dto.file; +package ru.soune.nocopy.dto.file; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/ru/soune/no_copy/dto/file/UploadProgressResponse.java b/src/main/java/ru/soune/nocopy/dto/file/UploadProgressResponse.java similarity index 88% rename from src/main/java/ru/soune/no_copy/dto/file/UploadProgressResponse.java rename to src/main/java/ru/soune/nocopy/dto/file/UploadProgressResponse.java index be77f03..f5e343d 100644 --- a/src/main/java/ru/soune/no_copy/dto/file/UploadProgressResponse.java +++ b/src/main/java/ru/soune/nocopy/dto/file/UploadProgressResponse.java @@ -1,12 +1,12 @@ -package ru.soune.no_copy.dto.file; +package ru.soune.nocopy.dto.file; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import ru.soune.no_copy.entity.file.FileUploadSession; -import ru.soune.no_copy.entity.file.UploadStatus; +import ru.soune.nocopy.entity.file.FileUploadSession; +import ru.soune.nocopy.entity.file.UploadStatus; @Data @Builder diff --git a/src/main/java/ru/soune/no_copy/entity/AuthToken.java b/src/main/java/ru/soune/nocopy/entity/AuthToken.java similarity index 97% rename from src/main/java/ru/soune/no_copy/entity/AuthToken.java rename to src/main/java/ru/soune/nocopy/entity/AuthToken.java index 6418073..63cf34a 100644 --- a/src/main/java/ru/soune/no_copy/entity/AuthToken.java +++ b/src/main/java/ru/soune/nocopy/entity/AuthToken.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity; +package ru.soune.nocopy.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/ru/soune/no_copy/entity/BaseEntity.java b/src/main/java/ru/soune/nocopy/entity/BaseEntity.java similarity index 95% rename from src/main/java/ru/soune/no_copy/entity/BaseEntity.java rename to src/main/java/ru/soune/nocopy/entity/BaseEntity.java index b51c525..2743abf 100644 --- a/src/main/java/ru/soune/no_copy/entity/BaseEntity.java +++ b/src/main/java/ru/soune/nocopy/entity/BaseEntity.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity; +package ru.soune.nocopy.entity; import jakarta.persistence.*; import lombok.Getter; diff --git a/src/main/java/ru/soune/no_copy/entity/ContentStatus.java b/src/main/java/ru/soune/nocopy/entity/ContentStatus.java similarity index 89% rename from src/main/java/ru/soune/no_copy/entity/ContentStatus.java rename to src/main/java/ru/soune/nocopy/entity/ContentStatus.java index d97f66c..c2dfa41 100644 --- a/src/main/java/ru/soune/no_copy/entity/ContentStatus.java +++ b/src/main/java/ru/soune/nocopy/entity/ContentStatus.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity; +package ru.soune.nocopy.entity; import lombok.Getter; diff --git a/src/main/java/ru/soune/no_copy/entity/GenderType.java b/src/main/java/ru/soune/nocopy/entity/GenderType.java similarity index 57% rename from src/main/java/ru/soune/no_copy/entity/GenderType.java rename to src/main/java/ru/soune/nocopy/entity/GenderType.java index e85f0f2..580d825 100644 --- a/src/main/java/ru/soune/no_copy/entity/GenderType.java +++ b/src/main/java/ru/soune/nocopy/entity/GenderType.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity; +package ru.soune.nocopy.entity; public enum GenderType { MALE, FEMALE diff --git a/src/main/java/ru/soune/no_copy/entity/ImageProtection.java b/src/main/java/ru/soune/nocopy/entity/ImageProtection.java similarity index 97% rename from src/main/java/ru/soune/no_copy/entity/ImageProtection.java rename to src/main/java/ru/soune/nocopy/entity/ImageProtection.java index 79a8c8d..eef9e95 100644 --- a/src/main/java/ru/soune/no_copy/entity/ImageProtection.java +++ b/src/main/java/ru/soune/nocopy/entity/ImageProtection.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity; +package ru.soune.nocopy.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/ru/soune/no_copy/entity/SubscriptionType.java b/src/main/java/ru/soune/nocopy/entity/SubscriptionType.java similarity index 76% rename from src/main/java/ru/soune/no_copy/entity/SubscriptionType.java rename to src/main/java/ru/soune/nocopy/entity/SubscriptionType.java index 4c78049..952722e 100644 --- a/src/main/java/ru/soune/no_copy/entity/SubscriptionType.java +++ b/src/main/java/ru/soune/nocopy/entity/SubscriptionType.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity; +package ru.soune.nocopy.entity; import lombok.Getter; diff --git a/src/main/java/ru/soune/no_copy/entity/User.java b/src/main/java/ru/soune/nocopy/entity/User.java similarity index 98% rename from src/main/java/ru/soune/no_copy/entity/User.java rename to src/main/java/ru/soune/nocopy/entity/User.java index 63a23f2..a4fba7d 100644 --- a/src/main/java/ru/soune/no_copy/entity/User.java +++ b/src/main/java/ru/soune/nocopy/entity/User.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity; +package ru.soune.nocopy.entity; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; diff --git a/src/main/java/ru/soune/no_copy/entity/UserAction.java b/src/main/java/ru/soune/nocopy/entity/UserAction.java similarity index 97% rename from src/main/java/ru/soune/no_copy/entity/UserAction.java rename to src/main/java/ru/soune/nocopy/entity/UserAction.java index d9d22ef..661ab3a 100644 --- a/src/main/java/ru/soune/no_copy/entity/UserAction.java +++ b/src/main/java/ru/soune/nocopy/entity/UserAction.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity; +package ru.soune.nocopy.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/ru/soune/no_copy/entity/UserContent.java b/src/main/java/ru/soune/nocopy/entity/UserContent.java similarity index 96% rename from src/main/java/ru/soune/no_copy/entity/UserContent.java rename to src/main/java/ru/soune/nocopy/entity/UserContent.java index a6603c1..1691926 100644 --- a/src/main/java/ru/soune/no_copy/entity/UserContent.java +++ b/src/main/java/ru/soune/nocopy/entity/UserContent.java @@ -1,10 +1,10 @@ -package ru.soune.no_copy.entity; +package ru.soune.nocopy.entity; import jakarta.persistence.*; import lombok.*; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; -import ru.soune.no_copy.entity.file.FileType; +import ru.soune.nocopy.entity.file.FileType; import java.time.LocalDateTime; diff --git a/src/main/java/ru/soune/no_copy/entity/Violation.java b/src/main/java/ru/soune/nocopy/entity/Violation.java similarity index 97% rename from src/main/java/ru/soune/no_copy/entity/Violation.java rename to src/main/java/ru/soune/nocopy/entity/Violation.java index 6e1768c..dd504bd 100644 --- a/src/main/java/ru/soune/no_copy/entity/Violation.java +++ b/src/main/java/ru/soune/nocopy/entity/Violation.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity; +package ru.soune.nocopy.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/ru/soune/no_copy/entity/file/FileEntity.java b/src/main/java/ru/soune/nocopy/entity/file/FileEntity.java similarity index 98% rename from src/main/java/ru/soune/no_copy/entity/file/FileEntity.java rename to src/main/java/ru/soune/nocopy/entity/file/FileEntity.java index abe0e9d..ffdd985 100644 --- a/src/main/java/ru/soune/no_copy/entity/file/FileEntity.java +++ b/src/main/java/ru/soune/nocopy/entity/file/FileEntity.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity.file; +package ru.soune.nocopy.entity.file; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/ru/soune/no_copy/entity/file/FileStatus.java b/src/main/java/ru/soune/nocopy/entity/file/FileStatus.java similarity index 67% rename from src/main/java/ru/soune/no_copy/entity/file/FileStatus.java rename to src/main/java/ru/soune/nocopy/entity/file/FileStatus.java index e84fc00..8e96247 100644 --- a/src/main/java/ru/soune/no_copy/entity/file/FileStatus.java +++ b/src/main/java/ru/soune/nocopy/entity/file/FileStatus.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity.file; +package ru.soune.nocopy.entity.file; public enum FileStatus { ACTIVE, diff --git a/src/main/java/ru/soune/no_copy/entity/file/FileType.java b/src/main/java/ru/soune/nocopy/entity/file/FileType.java similarity index 88% rename from src/main/java/ru/soune/no_copy/entity/file/FileType.java rename to src/main/java/ru/soune/nocopy/entity/file/FileType.java index dd7f6ab..e8d53f7 100644 --- a/src/main/java/ru/soune/no_copy/entity/file/FileType.java +++ b/src/main/java/ru/soune/nocopy/entity/file/FileType.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity.file; +package ru.soune.nocopy.entity.file; import lombok.Getter; diff --git a/src/main/java/ru/soune/no_copy/entity/file/FileUploadSession.java b/src/main/java/ru/soune/nocopy/entity/file/FileUploadSession.java similarity index 98% rename from src/main/java/ru/soune/no_copy/entity/file/FileUploadSession.java rename to src/main/java/ru/soune/nocopy/entity/file/FileUploadSession.java index 38b0bd9..46a8698 100644 --- a/src/main/java/ru/soune/no_copy/entity/file/FileUploadSession.java +++ b/src/main/java/ru/soune/nocopy/entity/file/FileUploadSession.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity.file; +package ru.soune.nocopy.entity.file; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/ru/soune/no_copy/entity/file/UploadStatus.java b/src/main/java/ru/soune/nocopy/entity/file/UploadStatus.java similarity index 72% rename from src/main/java/ru/soune/no_copy/entity/file/UploadStatus.java rename to src/main/java/ru/soune/nocopy/entity/file/UploadStatus.java index d1d3418..577413c 100644 --- a/src/main/java/ru/soune/no_copy/entity/file/UploadStatus.java +++ b/src/main/java/ru/soune/nocopy/entity/file/UploadStatus.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.entity.file; +package ru.soune.nocopy.entity.file; public enum UploadStatus { INITIATED, diff --git a/src/main/java/ru/soune/no_copy/exception/ChunkSizeExceededException.java b/src/main/java/ru/soune/nocopy/exception/ChunkSizeExceededException.java similarity index 86% rename from src/main/java/ru/soune/no_copy/exception/ChunkSizeExceededException.java rename to src/main/java/ru/soune/nocopy/exception/ChunkSizeExceededException.java index e45f12b..a19cd95 100644 --- a/src/main/java/ru/soune/no_copy/exception/ChunkSizeExceededException.java +++ b/src/main/java/ru/soune/nocopy/exception/ChunkSizeExceededException.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class ChunkSizeExceededException extends RuntimeException { public ChunkSizeExceededException(long actualSize, long maxSize) { diff --git a/src/main/java/ru/soune/no_copy/exception/ContentNotFoundException.java b/src/main/java/ru/soune/nocopy/exception/ContentNotFoundException.java similarity index 80% rename from src/main/java/ru/soune/no_copy/exception/ContentNotFoundException.java rename to src/main/java/ru/soune/nocopy/exception/ContentNotFoundException.java index af0f040..75b8af7 100644 --- a/src/main/java/ru/soune/no_copy/exception/ContentNotFoundException.java +++ b/src/main/java/ru/soune/nocopy/exception/ContentNotFoundException.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class ContentNotFoundException extends RuntimeException { public ContentNotFoundException(String message) { diff --git a/src/main/java/ru/soune/no_copy/exception/FileEntityNotFoundException.java b/src/main/java/ru/soune/nocopy/exception/FileEntityNotFoundException.java similarity index 89% rename from src/main/java/ru/soune/no_copy/exception/FileEntityNotFoundException.java rename to src/main/java/ru/soune/nocopy/exception/FileEntityNotFoundException.java index 8b5fd82..2924414 100644 --- a/src/main/java/ru/soune/no_copy/exception/FileEntityNotFoundException.java +++ b/src/main/java/ru/soune/nocopy/exception/FileEntityNotFoundException.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class FileEntityNotFoundException extends RuntimeException { public FileEntityNotFoundException(String fileId) { diff --git a/src/main/java/ru/soune/no_copy/exception/FileIntegrityException.java b/src/main/java/ru/soune/nocopy/exception/FileIntegrityException.java similarity index 80% rename from src/main/java/ru/soune/no_copy/exception/FileIntegrityException.java rename to src/main/java/ru/soune/nocopy/exception/FileIntegrityException.java index 2fece21..bb10cb9 100644 --- a/src/main/java/ru/soune/no_copy/exception/FileIntegrityException.java +++ b/src/main/java/ru/soune/nocopy/exception/FileIntegrityException.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class FileIntegrityException extends RuntimeException { public FileIntegrityException(String message) { diff --git a/src/main/java/ru/soune/no_copy/exception/FileUploadException.java b/src/main/java/ru/soune/nocopy/exception/FileUploadException.java similarity index 87% rename from src/main/java/ru/soune/no_copy/exception/FileUploadException.java rename to src/main/java/ru/soune/nocopy/exception/FileUploadException.java index 6c74b1d..5a38031 100644 --- a/src/main/java/ru/soune/no_copy/exception/FileUploadException.java +++ b/src/main/java/ru/soune/nocopy/exception/FileUploadException.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class FileUploadException extends RuntimeException { public FileUploadException(String message) { diff --git a/src/main/java/ru/soune/no_copy/exception/InvalidPasswordException.java b/src/main/java/ru/soune/nocopy/exception/InvalidPasswordException.java similarity index 80% rename from src/main/java/ru/soune/no_copy/exception/InvalidPasswordException.java rename to src/main/java/ru/soune/nocopy/exception/InvalidPasswordException.java index b9f2820..72a43e9 100644 --- a/src/main/java/ru/soune/no_copy/exception/InvalidPasswordException.java +++ b/src/main/java/ru/soune/nocopy/exception/InvalidPasswordException.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class InvalidPasswordException extends RuntimeException { public InvalidPasswordException(String message) { diff --git a/src/main/java/ru/soune/no_copy/exception/InvalidUserEmail.java b/src/main/java/ru/soune/nocopy/exception/InvalidUserEmail.java similarity index 79% rename from src/main/java/ru/soune/no_copy/exception/InvalidUserEmail.java rename to src/main/java/ru/soune/nocopy/exception/InvalidUserEmail.java index 7ce203b..850a7f1 100644 --- a/src/main/java/ru/soune/no_copy/exception/InvalidUserEmail.java +++ b/src/main/java/ru/soune/nocopy/exception/InvalidUserEmail.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class InvalidUserEmail extends RuntimeException { public InvalidUserEmail(String message) { diff --git a/src/main/java/ru/soune/no_copy/exception/NotFoundAuthToken.java b/src/main/java/ru/soune/nocopy/exception/NotFoundAuthToken.java similarity index 79% rename from src/main/java/ru/soune/no_copy/exception/NotFoundAuthToken.java rename to src/main/java/ru/soune/nocopy/exception/NotFoundAuthToken.java index 7a61eea..473f486 100644 --- a/src/main/java/ru/soune/no_copy/exception/NotFoundAuthToken.java +++ b/src/main/java/ru/soune/nocopy/exception/NotFoundAuthToken.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class NotFoundAuthToken extends RuntimeException { public NotFoundAuthToken(String message) { diff --git a/src/main/java/ru/soune/no_copy/exception/NotValidationPasswordException.java b/src/main/java/ru/soune/nocopy/exception/NotValidationPasswordException.java similarity index 82% rename from src/main/java/ru/soune/no_copy/exception/NotValidationPasswordException.java rename to src/main/java/ru/soune/nocopy/exception/NotValidationPasswordException.java index 6e24040..48a2fe5 100644 --- a/src/main/java/ru/soune/no_copy/exception/NotValidationPasswordException.java +++ b/src/main/java/ru/soune/nocopy/exception/NotValidationPasswordException.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class NotValidationPasswordException extends RuntimeException { public NotValidationPasswordException(String message) { diff --git a/src/main/java/ru/soune/no_copy/exception/TokenNotFoundException.java b/src/main/java/ru/soune/nocopy/exception/TokenNotFoundException.java similarity index 80% rename from src/main/java/ru/soune/no_copy/exception/TokenNotFoundException.java rename to src/main/java/ru/soune/nocopy/exception/TokenNotFoundException.java index d2e526b..b934cf4 100644 --- a/src/main/java/ru/soune/no_copy/exception/TokenNotFoundException.java +++ b/src/main/java/ru/soune/nocopy/exception/TokenNotFoundException.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class TokenNotFoundException extends RuntimeException { public TokenNotFoundException(String message) { diff --git a/src/main/java/ru/soune/no_copy/exception/UploadSessionNotFoundException.java b/src/main/java/ru/soune/nocopy/exception/UploadSessionNotFoundException.java similarity index 84% rename from src/main/java/ru/soune/no_copy/exception/UploadSessionNotFoundException.java rename to src/main/java/ru/soune/nocopy/exception/UploadSessionNotFoundException.java index bfc4bfc..35b0eb5 100644 --- a/src/main/java/ru/soune/no_copy/exception/UploadSessionNotFoundException.java +++ b/src/main/java/ru/soune/nocopy/exception/UploadSessionNotFoundException.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class UploadSessionNotFoundException extends RuntimeException { public UploadSessionNotFoundException(String uploadId) { diff --git a/src/main/java/ru/soune/no_copy/exception/UserAlreadyExistsException.java b/src/main/java/ru/soune/nocopy/exception/UserAlreadyExistsException.java similarity index 81% rename from src/main/java/ru/soune/no_copy/exception/UserAlreadyExistsException.java rename to src/main/java/ru/soune/nocopy/exception/UserAlreadyExistsException.java index 8815885..f390b6c 100644 --- a/src/main/java/ru/soune/no_copy/exception/UserAlreadyExistsException.java +++ b/src/main/java/ru/soune/nocopy/exception/UserAlreadyExistsException.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class UserAlreadyExistsException extends RuntimeException { public UserAlreadyExistsException(String message) { diff --git a/src/main/java/ru/soune/no_copy/exception/UserNotFoundException.java b/src/main/java/ru/soune/nocopy/exception/UserNotFoundException.java similarity index 80% rename from src/main/java/ru/soune/no_copy/exception/UserNotFoundException.java rename to src/main/java/ru/soune/nocopy/exception/UserNotFoundException.java index a8d8b03..919ff70 100644 --- a/src/main/java/ru/soune/no_copy/exception/UserNotFoundException.java +++ b/src/main/java/ru/soune/nocopy/exception/UserNotFoundException.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.exception; +package ru.soune.nocopy.exception; public class UserNotFoundException extends RuntimeException { public UserNotFoundException(String message) { diff --git a/src/main/java/ru/soune/no_copy/handler/GlobalExceptionHandler.java b/src/main/java/ru/soune/nocopy/handler/GlobalExceptionHandler.java similarity index 97% rename from src/main/java/ru/soune/no_copy/handler/GlobalExceptionHandler.java rename to src/main/java/ru/soune/nocopy/handler/GlobalExceptionHandler.java index c3a02b2..84d4b44 100644 --- a/src/main/java/ru/soune/no_copy/handler/GlobalExceptionHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/GlobalExceptionHandler.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.handler; +package ru.soune.nocopy.handler; import lombok.AllArgsConstructor; import org.springframework.context.support.DefaultMessageSourceResolvable; @@ -8,7 +8,7 @@ import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; -import ru.soune.no_copy.exception.*; +import ru.soune.nocopy.exception.*; import java.util.Map; diff --git a/src/main/java/ru/soune/no_copy/handler/JwtTokenProvider.java b/src/main/java/ru/soune/nocopy/handler/JwtTokenProvider.java similarity index 73% rename from src/main/java/ru/soune/no_copy/handler/JwtTokenProvider.java rename to src/main/java/ru/soune/nocopy/handler/JwtTokenProvider.java index 721869c..9b18a21 100644 --- a/src/main/java/ru/soune/no_copy/handler/JwtTokenProvider.java +++ b/src/main/java/ru/soune/nocopy/handler/JwtTokenProvider.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.handler; +package ru.soune.nocopy.handler; import org.springframework.stereotype.Component; diff --git a/src/main/java/ru/soune/no_copy/mapper/UserContentMapper.java b/src/main/java/ru/soune/nocopy/mapper/UserContentMapper.java similarity index 79% rename from src/main/java/ru/soune/no_copy/mapper/UserContentMapper.java rename to src/main/java/ru/soune/nocopy/mapper/UserContentMapper.java index 5617cbd..3959f8f 100644 --- a/src/main/java/ru/soune/no_copy/mapper/UserContentMapper.java +++ b/src/main/java/ru/soune/nocopy/mapper/UserContentMapper.java @@ -1,11 +1,11 @@ -package ru.soune.no_copy.mapper; +package ru.soune.nocopy.mapper; import org.mapstruct.Mapper; import org.mapstruct.MappingTarget; import org.mapstruct.NullValuePropertyMappingStrategy; import org.mapstruct.factory.Mappers; -import ru.soune.no_copy.dto.UserContentUpdateRequest; -import ru.soune.no_copy.entity.UserContent; +import ru.soune.nocopy.dto.UserContentUpdateRequest; +import ru.soune.nocopy.entity.UserContent; @Mapper(componentModel = "spring", nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE) diff --git a/src/main/java/ru/soune/no_copy/mapper/UserMapper.java b/src/main/java/ru/soune/nocopy/mapper/UserMapper.java similarity index 77% rename from src/main/java/ru/soune/no_copy/mapper/UserMapper.java rename to src/main/java/ru/soune/nocopy/mapper/UserMapper.java index 442f082..c151480 100644 --- a/src/main/java/ru/soune/no_copy/mapper/UserMapper.java +++ b/src/main/java/ru/soune/nocopy/mapper/UserMapper.java @@ -1,10 +1,10 @@ -package ru.soune.no_copy.mapper; +package ru.soune.nocopy.mapper; import org.mapstruct.Mapper; import org.mapstruct.NullValuePropertyMappingStrategy; import org.mapstruct.factory.Mappers; -import ru.soune.no_copy.dto.UserDTO; -import ru.soune.no_copy.entity.User; +import ru.soune.nocopy.dto.UserDTO; +import ru.soune.nocopy.entity.User; @Mapper(componentModel = "spring", nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE) diff --git a/src/main/java/ru/soune/no_copy/repository/AuthTokenRepository.java b/src/main/java/ru/soune/nocopy/repository/AuthTokenRepository.java similarity index 83% rename from src/main/java/ru/soune/no_copy/repository/AuthTokenRepository.java rename to src/main/java/ru/soune/nocopy/repository/AuthTokenRepository.java index af56845..74826fd 100644 --- a/src/main/java/ru/soune/no_copy/repository/AuthTokenRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/AuthTokenRepository.java @@ -1,8 +1,8 @@ -package ru.soune.no_copy.repository; +package ru.soune.nocopy.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import ru.soune.no_copy.entity.AuthToken; +import ru.soune.nocopy.entity.AuthToken; import java.time.LocalDate; import java.util.Optional; diff --git a/src/main/java/ru/soune/no_copy/repository/FileEntityRepository.java b/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java similarity index 89% rename from src/main/java/ru/soune/no_copy/repository/FileEntityRepository.java rename to src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java index 41e2781..3ee41cb 100644 --- a/src/main/java/ru/soune/no_copy/repository/FileEntityRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java @@ -1,11 +1,11 @@ -package ru.soune.no_copy.repository; +package ru.soune.nocopy.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import ru.soune.no_copy.entity.file.FileEntity; -import ru.soune.no_copy.entity.file.FileStatus; +import ru.soune.nocopy.entity.file.FileEntity; +import ru.soune.nocopy.entity.file.FileStatus; import java.util.List; import java.util.Optional; diff --git a/src/main/java/ru/soune/no_copy/repository/FileUploadSessionRepository.java b/src/main/java/ru/soune/nocopy/repository/FileUploadSessionRepository.java similarity index 88% rename from src/main/java/ru/soune/no_copy/repository/FileUploadSessionRepository.java rename to src/main/java/ru/soune/nocopy/repository/FileUploadSessionRepository.java index 0a9175f..2b222a3 100644 --- a/src/main/java/ru/soune/no_copy/repository/FileUploadSessionRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/FileUploadSessionRepository.java @@ -1,11 +1,11 @@ -package ru.soune.no_copy.repository; +package ru.soune.nocopy.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import ru.soune.no_copy.entity.file.FileUploadSession; -import ru.soune.no_copy.entity.file.UploadStatus; +import ru.soune.nocopy.entity.file.FileUploadSession; +import ru.soune.nocopy.entity.file.UploadStatus; import java.time.LocalDateTime; import java.util.List; diff --git a/src/main/java/ru/soune/no_copy/repository/UserContentRepository.java b/src/main/java/ru/soune/nocopy/repository/UserContentRepository.java similarity index 81% rename from src/main/java/ru/soune/no_copy/repository/UserContentRepository.java rename to src/main/java/ru/soune/nocopy/repository/UserContentRepository.java index 42f5e72..74fcd4b 100644 --- a/src/main/java/ru/soune/no_copy/repository/UserContentRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/UserContentRepository.java @@ -1,9 +1,9 @@ -package ru.soune.no_copy.repository; +package ru.soune.nocopy.repository; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; -import ru.soune.no_copy.entity.file.FileType; -import ru.soune.no_copy.entity.UserContent; +import ru.soune.nocopy.entity.file.FileType; +import ru.soune.nocopy.entity.UserContent; import java.util.List; diff --git a/src/main/java/ru/soune/no_copy/repository/UserRepository.java b/src/main/java/ru/soune/nocopy/repository/UserRepository.java similarity index 77% rename from src/main/java/ru/soune/no_copy/repository/UserRepository.java rename to src/main/java/ru/soune/nocopy/repository/UserRepository.java index 472fe58..da4d7f9 100644 --- a/src/main/java/ru/soune/no_copy/repository/UserRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/UserRepository.java @@ -1,7 +1,7 @@ -package ru.soune.no_copy.repository; +package ru.soune.nocopy.repository; import org.springframework.data.jpa.repository.JpaRepository; -import ru.soune.no_copy.entity.User; +import ru.soune.nocopy.entity.User; import java.util.Optional; diff --git a/src/main/java/ru/soune/no_copy/service/AuthService.java b/src/main/java/ru/soune/nocopy/service/AuthService.java similarity index 84% rename from src/main/java/ru/soune/no_copy/service/AuthService.java rename to src/main/java/ru/soune/nocopy/service/AuthService.java index 1cb1966..6784449 100644 --- a/src/main/java/ru/soune/no_copy/service/AuthService.java +++ b/src/main/java/ru/soune/nocopy/service/AuthService.java @@ -1,24 +1,23 @@ -package ru.soune.no_copy.service; +package ru.soune.nocopy.service; import lombok.RequiredArgsConstructor; import org.springframework.context.MessageSource; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.soune.no_copy.dto.LoginRequest; -import ru.soune.no_copy.dto.RegisterRequest; -import ru.soune.no_copy.entity.AuthToken; -import ru.soune.no_copy.entity.User; -import ru.soune.no_copy.exception.NotValidationPasswordException; -import ru.soune.no_copy.exception.UserAlreadyExistsException; -import ru.soune.no_copy.exception.UserNotFoundException; -import ru.soune.no_copy.repository.AuthTokenRepository; -import ru.soune.no_copy.repository.UserRepository; +import ru.soune.nocopy.dto.LoginRequest; +import ru.soune.nocopy.dto.RegisterRequest; +import ru.soune.nocopy.entity.AuthToken; +import ru.soune.nocopy.entity.User; +import ru.soune.nocopy.exception.NotValidationPasswordException; +import ru.soune.nocopy.exception.UserAlreadyExistsException; +import ru.soune.nocopy.exception.UserNotFoundException; +import ru.soune.nocopy.repository.AuthTokenRepository; +import ru.soune.nocopy.repository.UserRepository; import java.security.SecureRandom; import java.time.LocalDateTime; import java.util.Base64; -import java.util.Locale; import java.util.Optional; @Service diff --git a/src/main/java/ru/soune/no_copy/service/UserContentService.java b/src/main/java/ru/soune/nocopy/service/UserContentService.java similarity index 81% rename from src/main/java/ru/soune/no_copy/service/UserContentService.java rename to src/main/java/ru/soune/nocopy/service/UserContentService.java index eb2573d..e113752 100644 --- a/src/main/java/ru/soune/no_copy/service/UserContentService.java +++ b/src/main/java/ru/soune/nocopy/service/UserContentService.java @@ -1,18 +1,18 @@ -package ru.soune.no_copy.service; +package ru.soune.nocopy.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.file.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 ru.soune.nocopy.dto.UserContentRequest; +import ru.soune.nocopy.dto.UserContentUpdateRequest; +import ru.soune.nocopy.entity.file.FileType; +import ru.soune.nocopy.entity.User; +import ru.soune.nocopy.entity.UserContent; +import ru.soune.nocopy.exception.ContentNotFoundException; +import ru.soune.nocopy.exception.UserNotFoundException; +import ru.soune.nocopy.mapper.UserContentMapper; +import ru.soune.nocopy.repository.UserContentRepository; +import ru.soune.nocopy.repository.UserRepository; import java.util.List; import java.util.Optional; diff --git a/src/main/java/ru/soune/no_copy/service/UserService.java b/src/main/java/ru/soune/nocopy/service/UserService.java similarity index 86% rename from src/main/java/ru/soune/no_copy/service/UserService.java rename to src/main/java/ru/soune/nocopy/service/UserService.java index 4cb0a51..7c4b79f 100644 --- a/src/main/java/ru/soune/no_copy/service/UserService.java +++ b/src/main/java/ru/soune/nocopy/service/UserService.java @@ -1,17 +1,17 @@ -package ru.soune.no_copy.service; +package ru.soune.nocopy.service; import lombok.AllArgsConstructor; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.soune.no_copy.dto.ChangePasswordRequest; -import ru.soune.no_copy.dto.UserDTO; -import ru.soune.no_copy.dto.UserRequest; -import ru.soune.no_copy.entity.User; -import ru.soune.no_copy.exception.InvalidUserEmail; -import ru.soune.no_copy.exception.NotValidationPasswordException; -import ru.soune.no_copy.exception.UserNotFoundException; -import ru.soune.no_copy.repository.UserRepository; +import ru.soune.nocopy.dto.ChangePasswordRequest; +import ru.soune.nocopy.dto.UserDTO; +import ru.soune.nocopy.dto.UserRequest; +import ru.soune.nocopy.entity.User; +import ru.soune.nocopy.exception.InvalidUserEmail; +import ru.soune.nocopy.exception.NotValidationPasswordException; +import ru.soune.nocopy.exception.UserNotFoundException; +import ru.soune.nocopy.repository.UserRepository; @Service @AllArgsConstructor diff --git a/src/main/java/ru/soune/no_copy/service/file/FileCleanupService.java b/src/main/java/ru/soune/nocopy/service/file/FileCleanupService.java similarity index 98% rename from src/main/java/ru/soune/no_copy/service/file/FileCleanupService.java rename to src/main/java/ru/soune/nocopy/service/file/FileCleanupService.java index 65a8f05..f86aa89 100644 --- a/src/main/java/ru/soune/no_copy/service/file/FileCleanupService.java +++ b/src/main/java/ru/soune/nocopy/service/file/FileCleanupService.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.service.file; +package ru.soune.nocopy.service.file; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; diff --git a/src/main/java/ru/soune/no_copy/service/file/FileEntityService.java b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java similarity index 95% rename from src/main/java/ru/soune/no_copy/service/file/FileEntityService.java rename to src/main/java/ru/soune/nocopy/service/file/FileEntityService.java index 2a745a9..5bc39a2 100644 --- a/src/main/java/ru/soune/no_copy/service/file/FileEntityService.java +++ b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java @@ -1,16 +1,16 @@ -package ru.soune.no_copy.service.file; +package ru.soune.nocopy.service.file; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.soune.no_copy.dto.file.FileEntityResponse; -import ru.soune.no_copy.dto.file.FileListResponse; -import ru.soune.no_copy.entity.file.FileEntity; -import ru.soune.no_copy.entity.file.FileStatus; -import ru.soune.no_copy.entity.file.FileUploadSession; -import ru.soune.no_copy.exception.FileEntityNotFoundException; -import ru.soune.no_copy.repository.FileEntityRepository; +import ru.soune.nocopy.dto.file.FileEntityResponse; +import ru.soune.nocopy.dto.file.FileListResponse; +import ru.soune.nocopy.entity.file.FileEntity; +import ru.soune.nocopy.entity.file.FileStatus; +import ru.soune.nocopy.entity.file.FileUploadSession; +import ru.soune.nocopy.exception.FileEntityNotFoundException; +import ru.soune.nocopy.repository.FileEntityRepository; import java.io.IOException; import java.nio.file.Files; diff --git a/src/main/java/ru/soune/no_copy/service/file/FileUploadService.java b/src/main/java/ru/soune/nocopy/service/file/FileUploadService.java similarity index 80% rename from src/main/java/ru/soune/no_copy/service/file/FileUploadService.java rename to src/main/java/ru/soune/nocopy/service/file/FileUploadService.java index 7a9fe55..cfb9aec 100644 --- a/src/main/java/ru/soune/no_copy/service/file/FileUploadService.java +++ b/src/main/java/ru/soune/nocopy/service/file/FileUploadService.java @@ -1,8 +1,8 @@ -package ru.soune.no_copy.service.file; +package ru.soune.nocopy.service.file; import org.springframework.web.multipart.MultipartFile; -import ru.soune.no_copy.dto.file.UploadProgressResponse; -import ru.soune.no_copy.entity.file.FileUploadSession; +import ru.soune.nocopy.dto.file.UploadProgressResponse; +import ru.soune.nocopy.entity.file.FileUploadSession; import java.io.IOException; diff --git a/src/main/java/ru/soune/no_copy/service/file/FileUploadServiceImpl.java b/src/main/java/ru/soune/nocopy/service/file/FileUploadServiceImpl.java similarity index 98% rename from src/main/java/ru/soune/no_copy/service/file/FileUploadServiceImpl.java rename to src/main/java/ru/soune/nocopy/service/file/FileUploadServiceImpl.java index d01a2f0..af4aeb4 100644 --- a/src/main/java/ru/soune/no_copy/service/file/FileUploadServiceImpl.java +++ b/src/main/java/ru/soune/nocopy/service/file/FileUploadServiceImpl.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.service.file; +package ru.soune.nocopy.service.file; import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; @@ -9,13 +9,13 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import ru.soune.no_copy.dto.file.UploadProgressResponse; -import ru.soune.no_copy.entity.file.FileUploadSession; -import ru.soune.no_copy.entity.file.UploadStatus; -import ru.soune.no_copy.exception.ChunkSizeExceededException; -import ru.soune.no_copy.exception.FileUploadException; -import ru.soune.no_copy.exception.UploadSessionNotFoundException; -import ru.soune.no_copy.repository.FileUploadSessionRepository; +import ru.soune.nocopy.dto.file.UploadProgressResponse; +import ru.soune.nocopy.entity.file.FileUploadSession; +import ru.soune.nocopy.entity.file.UploadStatus; +import ru.soune.nocopy.exception.ChunkSizeExceededException; +import ru.soune.nocopy.exception.FileUploadException; +import ru.soune.nocopy.exception.UploadSessionNotFoundException; +import ru.soune.nocopy.repository.FileUploadSessionRepository; import java.io.*; import java.nio.file.*; diff --git a/src/test/java/ru/soune/no_copy/service/AuthServiceTest.java b/src/test/java/ru/soune/nocopy/service/AuthServiceTest.java similarity index 89% rename from src/test/java/ru/soune/no_copy/service/AuthServiceTest.java rename to src/test/java/ru/soune/nocopy/service/AuthServiceTest.java index 2b75fcb..8e045fd 100644 --- a/src/test/java/ru/soune/no_copy/service/AuthServiceTest.java +++ b/src/test/java/ru/soune/nocopy/service/AuthServiceTest.java @@ -1,4 +1,4 @@ -package ru.soune.no_copy.service; +package ru.soune.nocopy.service; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -8,15 +8,15 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.springframework.context.MessageSource; import org.springframework.security.crypto.password.PasswordEncoder; -import ru.soune.no_copy.dto.LoginRequest; -import ru.soune.no_copy.dto.RegisterRequest; -import ru.soune.no_copy.entity.AuthToken; -import ru.soune.no_copy.entity.User; -import ru.soune.no_copy.exception.NotValidationPasswordException; -import ru.soune.no_copy.exception.UserAlreadyExistsException; -import ru.soune.no_copy.exception.UserNotFoundException; -import ru.soune.no_copy.repository.AuthTokenRepository; -import ru.soune.no_copy.repository.UserRepository; +import ru.soune.nocopy.dto.LoginRequest; +import ru.soune.nocopy.dto.RegisterRequest; +import ru.soune.nocopy.entity.AuthToken; +import ru.soune.nocopy.entity.User; +import ru.soune.nocopy.exception.NotValidationPasswordException; +import ru.soune.nocopy.exception.UserAlreadyExistsException; +import ru.soune.nocopy.exception.UserNotFoundException; +import ru.soune.nocopy.repository.AuthTokenRepository; +import ru.soune.nocopy.repository.UserRepository; import java.util.Locale; import java.util.Optional;