diff --git a/src/main/java/ru/soune/nocopy/dto/file/FileEntityResponse.java b/src/main/java/ru/soune/nocopy/dto/file/FileEntityResponse.java index cbfae88..debabc6 100644 --- a/src/main/java/ru/soune/nocopy/dto/file/FileEntityResponse.java +++ b/src/main/java/ru/soune/nocopy/dto/file/FileEntityResponse.java @@ -31,4 +31,5 @@ public class FileEntityResponse { private String downloadUrl; private boolean existsOnDisk; private Integer supportId; + private String protectStatus; } diff --git a/src/main/java/ru/soune/nocopy/dto/file/FileInfoUserResponse.java b/src/main/java/ru/soune/nocopy/dto/file/FileInfoUserResponse.java index 8b2f932..9c1e19a 100644 --- a/src/main/java/ru/soune/nocopy/dto/file/FileInfoUserResponse.java +++ b/src/main/java/ru/soune/nocopy/dto/file/FileInfoUserResponse.java @@ -58,4 +58,7 @@ public class FileInfoUserResponse { @JsonProperty("audios_violations") private Integer audiosViolations; + + @JsonProperty("protected_files_count") + private Long protectedFilesCount; } diff --git a/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java index ac0f35d..f55cc81 100644 --- a/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java +++ b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java @@ -340,6 +340,7 @@ public class FileEntityService { .downloadUrl("/api/v" + version + "/files/download/" + fileEntity.getId()) .existsOnDisk(existsOnDisk) .supportId(fileEntity.getSupportId()) + .protectStatus(fileEntity.getProtectionStatus().toString()) .build(); } diff --git a/src/main/java/ru/soune/nocopy/service/file/FileStatsService.java b/src/main/java/ru/soune/nocopy/service/file/FileStatsService.java index a32f04d..8e7e163 100644 --- a/src/main/java/ru/soune/nocopy/service/file/FileStatsService.java +++ b/src/main/java/ru/soune/nocopy/service/file/FileStatsService.java @@ -6,6 +6,7 @@ import ru.soune.nocopy.dto.file.FileInfoUserResponse; import ru.soune.nocopy.entity.file.FileEntity; import ru.soune.nocopy.entity.file.FileStatus; import ru.soune.nocopy.entity.file.FileType; +import ru.soune.nocopy.entity.file.ProtectionStatus; import ru.soune.nocopy.repository.FileEntityRepository; import java.util.List; @@ -41,8 +42,14 @@ public class FileStatsService { .audiosCount(calculateMediaCount(files, FileType.AUDIO)) .audiosCheck(calculateMediaByStatus(files, FileType.AUDIO, FileStatus.CHECKED)) .audiosViolations(calculateMediaByStatus(files, FileType.AUDIO, FileStatus.VIOLATION)) + .protectedFilesCount(protectedUserFiles(files)) .build(); } + + private Long protectedUserFiles(List files) { + return files.stream().filter(file -> file.getProtectionStatus() == ProtectionStatus.PROTECTED).count(); + } + private Long calculateTotalSize(List files) { return files.stream() .filter(file -> file.getStatus() != FileStatus.DELETED)