This commit is contained in:
@@ -12,6 +12,7 @@ import ru.soune.nocopy.entity.file.ProtectionStatus;
|
|||||||
import ru.soune.nocopy.exception.FileEntityNotFoundException;
|
import ru.soune.nocopy.exception.FileEntityNotFoundException;
|
||||||
import ru.soune.nocopy.exception.NotFoundAuthToken;
|
import ru.soune.nocopy.exception.NotFoundAuthToken;
|
||||||
import ru.soune.nocopy.repository.FileEntityRepository;
|
import ru.soune.nocopy.repository.FileEntityRepository;
|
||||||
|
import ru.soune.nocopy.service.file.cloud.CloudStorageService;
|
||||||
import ru.soune.nocopy.service.register.AuthService;
|
import ru.soune.nocopy.service.register.AuthService;
|
||||||
import ru.soune.nocopy.service.file.FileEntityService;
|
import ru.soune.nocopy.service.file.FileEntityService;
|
||||||
import ru.soune.nocopy.service.file.FileStatsService;
|
import ru.soune.nocopy.service.file.FileStatsService;
|
||||||
@@ -35,6 +36,8 @@ public class FileEntityHandler implements RequestHandler {
|
|||||||
|
|
||||||
private final FileEntityRepository fileEntityRepository;
|
private final FileEntityRepository fileEntityRepository;
|
||||||
|
|
||||||
|
private final CloudStorageService cloudStorageService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse handle(BaseRequest request) {
|
public BaseResponse handle(BaseRequest request) {
|
||||||
try {
|
try {
|
||||||
@@ -302,7 +305,7 @@ public class FileEntityHandler implements RequestHandler {
|
|||||||
int fullDelete = fileRequest.getFullDelete() == null ? 0 : fileRequest.getFullDelete();
|
int fullDelete = fileRequest.getFullDelete() == null ? 0 : fileRequest.getFullDelete();
|
||||||
|
|
||||||
if (fileEntity.getStatus().equals(FileStatus.DELETED) || fullDelete == 1) {
|
if (fileEntity.getStatus().equals(FileStatus.DELETED) || fullDelete == 1) {
|
||||||
fileEntityService.deleteFromStorageDisk(fileEntity);
|
cloudStorageService.deleteFromStorageDisk(fileEntity);
|
||||||
response = DeleteFileResponse.builder()
|
response = DeleteFileResponse.builder()
|
||||||
.fileId(fileRequest.getFileId())
|
.fileId(fileRequest.getFileId())
|
||||||
.message("File deleted from disk")
|
.message("File deleted from disk")
|
||||||
|
|||||||
@@ -186,13 +186,6 @@ public class FileEntityService {
|
|||||||
fileEntityRepository.save(fileEntity);
|
fileEntityRepository.save(fileEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteFromStorageDisk(FileEntity fileEntity) {
|
|
||||||
cloudStorageService.deleteFileFromStorage(fileEntity.getFilePath());
|
|
||||||
cloudStorageService.deleteFileFromStorage(fileEntity.getProtectedFilePath());
|
|
||||||
|
|
||||||
fileEntityRepository.delete(fileEntity);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void deleteFromDisk(String deleteFilePath) throws IOException {
|
public void deleteFromDisk(String deleteFilePath) throws IOException {
|
||||||
Files.deleteIfExists(Paths.get(deleteFilePath));
|
Files.deleteIfExists(Paths.get(deleteFilePath));
|
||||||
}
|
}
|
||||||
@@ -238,7 +231,7 @@ public class FileEntityService {
|
|||||||
List<FileEntity> fileByUserIdAndStatus = fileEntityRepository.findFileByUserIdAndStatus(userId, FileStatus.TEMP);
|
List<FileEntity> fileByUserIdAndStatus = fileEntityRepository.findFileByUserIdAndStatus(userId, FileStatus.TEMP);
|
||||||
|
|
||||||
for (FileEntity fileEntity : fileByUserIdAndStatus) {
|
for (FileEntity fileEntity : fileByUserIdAndStatus) {
|
||||||
deleteFromStorageDisk(fileEntity);
|
cloudStorageService.deleteFromStorageDisk(fileEntity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.soune.nocopy.service.file.FileEntityService;
|
import ru.soune.nocopy.entity.file.FileEntity;
|
||||||
|
import ru.soune.nocopy.repository.FileEntityRepository;
|
||||||
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
|
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
|
||||||
import software.amazon.awssdk.auth.credentials.AwsCredentials;
|
import software.amazon.awssdk.auth.credentials.AwsCredentials;
|
||||||
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
|
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
|
||||||
@@ -26,7 +27,7 @@ import java.nio.file.Paths;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class CloudStorageService {
|
public class CloudStorageService {
|
||||||
|
|
||||||
private final FileEntityService fileEntityService;
|
private final FileEntityRepository fileEntityRepository;
|
||||||
|
|
||||||
@Value("${yandex.cloud.key}")
|
@Value("${yandex.cloud.key}")
|
||||||
private String key;
|
private String key;
|
||||||
@@ -66,7 +67,7 @@ public class CloudStorageService {
|
|||||||
try {
|
try {
|
||||||
s3Client.putObject(putObjectRequest,
|
s3Client.putObject(putObjectRequest,
|
||||||
RequestBody.fromBytes(Files.readAllBytes(Paths.get(sendToCloudFilePath))));
|
RequestBody.fromBytes(Files.readAllBytes(Paths.get(sendToCloudFilePath))));
|
||||||
fileEntityService.deleteFromDisk(sendToCloudFilePath);
|
Files.deleteIfExists(Paths.get(sendToCloudFilePath));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("Failed to read file: {}", filePath, e);
|
log.error("Failed to read file: {}", filePath, e);
|
||||||
}
|
}
|
||||||
@@ -129,4 +130,14 @@ public class CloudStorageService {
|
|||||||
throw new RuntimeException("Failed to delete file from cloud storage: " + cloudKey, e);
|
throw new RuntimeException("Failed to delete file from cloud storage: " + cloudKey, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteFromStorageDisk(FileEntity fileEntity) {
|
||||||
|
deleteFileFromStorage(fileEntity.getFilePath());
|
||||||
|
|
||||||
|
if (fileEntity.getProtectedFilePath() != null) {
|
||||||
|
deleteFileFromStorage(fileEntity.getProtectedFilePath());
|
||||||
|
}
|
||||||
|
|
||||||
|
fileEntityRepository.delete(fileEntity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user