Мелкие фиксы репозитория хранения файлов.

This commit is contained in:
parent 6f05877ac9
commit 2769271583
4 changed files with 149 additions and 113 deletions

View File

@ -11,6 +11,7 @@ namespace AsbCloudApp.Repositories
/// </summary> /// </summary>
public interface IFileStorageRepository public interface IFileStorageRepository
{ {
/// <summary> /// <summary>
/// Получение длинны фала и проверка его наличия, если отсутствует падает исключение /// Получение длинны фала и проверка его наличия, если отсутствует падает исключение
/// </summary> /// </summary>
@ -35,10 +36,16 @@ namespace AsbCloudApp.Repositories
Task SaveFileAsync(string filePathRec, Stream fileStreamSrc, CancellationToken token); Task SaveFileAsync(string filePathRec, Stream fileStreamSrc, CancellationToken token);
/// <summary> /// <summary>
/// Удаление файла /// Удаление пачки файлов
/// </summary> /// </summary>
/// <param name="filesName"></param> /// <param name="filesName"></param>
void DeleteFile(IEnumerable<string> filesName); void DeleteFiles(IEnumerable<string> filesName);
/// <summary>
/// Удаление одного файла
/// </summary>
/// <param name="fileName"></param>
void DeleteFile(string fileName);
/// <summary> /// <summary>
/// Удаление всех файлов с диска о которых нет информации в базе /// Удаление всех файлов с диска о которых нет информации в базе
@ -55,7 +62,7 @@ namespace AsbCloudApp.Repositories
IEnumerable<FileInfoDto> GetListFilesNotDisc(IEnumerable<FileInfoDto> files); IEnumerable<FileInfoDto> GetListFilesNotDisc(IEnumerable<FileInfoDto> files);
/// <summary> /// <summary>
/// Получение пути к файлу /// Создание пути для сохранения файла связанного со скважиной
/// </summary> /// </summary>
/// <param name="idWell"></param> /// <param name="idWell"></param>
/// <param name="idCategory"></param> /// <param name="idCategory"></param>
@ -65,13 +72,32 @@ namespace AsbCloudApp.Repositories
string MakeFilePath(int idWell, int idCategory, string fileFullName, int fileId); string MakeFilePath(int idWell, int idCategory, string fileFullName, int fileId);
/// <summary> /// <summary>
/// Получить путь для скачивания /// Создание пути для сохранения файла
/// </summary>
/// <param name="path1"></param>
/// <param name="path2"></param>
/// <param name="path3"></param>
/// <returns></returns>
string MakeFilePath(string path1, string path2, string path3);
/// <summary>
/// Получение пути к файлу связанного со скважиной
/// </summary> /// </summary>
/// <param name="idWell"></param> /// <param name="idWell"></param>
/// <param name="idCategory"></param> /// <param name="idCategory"></param>
/// <param name="idFile"></param> /// <param name="idFile"></param>
/// <param name="dotExtention"></param> /// <param name="dotExtenstion"></param>
/// <returns></returns> /// <returns></returns>
string GetUrl(int idWell, int idCategory, int idFile, string dotExtention); string GetFilePath(int idWell, int idCategory, int idFile, string dotExtenstion);
/// <summary>
/// Получение пути файла лежащего на диске
/// </summary>
/// <param name="path1"></param>
/// <param name="path2"></param>
/// <param name="idFile"></param>
/// <param name="dotExtenstion"></param>
/// <returns></returns>
string GetFilePath(string path1, string path2, int idFile, string dotExtenstion);
} }
} }

View File

@ -121,7 +121,7 @@ namespace AsbCloudApp.Services
return 0; return 0;
var filesName = files.Select(x => GetUrl(x.IdWell, x.IdCategory, x.Id, Path.GetExtension(x.Name))); var filesName = files.Select(x => GetUrl(x.IdWell, x.IdCategory, x.Id, Path.GetExtension(x.Name)));
fileStorageRepository.DeleteFile(filesName); fileStorageRepository.DeleteFiles(filesName);
return files.Any() ? 1 : 0; return files.Any() ? 1 : 0;
} }
@ -143,7 +143,7 @@ namespace AsbCloudApp.Services
/// <param name="dotExtention"></param> /// <param name="dotExtention"></param>
/// <returns></returns> /// <returns></returns>
public string GetUrl(int idWell, int idCategory, int idFile, string dotExtention) => public string GetUrl(int idWell, int idCategory, int idFile, string dotExtention) =>
fileStorageRepository.GetUrl(idWell, idCategory, idFile, dotExtention); fileStorageRepository.GetFilePath(idWell, idCategory, idFile, dotExtention);
/// <summary> /// <summary>
/// пометить метку файла как удаленную /// пометить метку файла как удаленную

View File

@ -6,11 +6,10 @@ using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace AsbCloudInfrastructure.Repository namespace AsbCloudInfrastructure.Repository;
{
public class FileStorageRepository : IFileStorageRepository public class FileStorageRepository : IFileStorageRepository
{ {
/// <summary> /// <summary>
/// Директория хранения файлов /// Директория хранения файлов
/// </summary> /// </summary>
@ -27,14 +26,19 @@ namespace AsbCloudInfrastructure.Repository
await fileStreamSrc.CopyToAsync(newfileStream, token).ConfigureAwait(false); await fileStreamSrc.CopyToAsync(newfileStream, token).ConfigureAwait(false);
} }
public void DeleteFile(IEnumerable<string> filesName) public void DeleteFiles(IEnumerable<string> filesName)
{ {
foreach (var fileName in filesName) foreach (var fileName in filesName)
{
DeleteFile(fileName);
}
}
public void DeleteFile(string fileName)
{ {
if (File.Exists(fileName)) if (File.Exists(fileName))
File.Delete(fileName); File.Delete(fileName);
} }
}
public long GetFileLength(string srcFilePath) public long GetFileLength(string srcFilePath)
{ {
@ -48,11 +52,16 @@ namespace AsbCloudInfrastructure.Repository
File.Move(srcFilePath, filePath); File.Move(srcFilePath, filePath);
} }
public string MakeFilePath(int idWell, int idCategory, string fileFullName, int fileId) public string MakeFilePath(int idWell, int idCategory, string fileFullName, int fileId) =>
{ MakeFilePath($"{idWell}",
return Path.Combine(RootPath, $"{idWell}", $"{idCategory}",
$"{idCategory}", $"{fileId}" + $"{Path.GetExtension(fileFullName)}"); $"{fileId}" + $"{Path.GetExtension(fileFullName)}");
}
public string MakeFilePath(string path1, string path2, string path3) =>
Path.Combine(RootPath,
path1,
path2,
path3);
public int DeleteFilesNotInList(int idWell, IEnumerable<int> idsFilesList) public int DeleteFilesNotInList(int idWell, IEnumerable<int> idsFilesList)
{ {
@ -90,8 +99,11 @@ namespace AsbCloudInfrastructure.Repository
return resutl; return resutl;
} }
public string GetUrl(int idWell, int idCategory, int idFile, string dotExtention) => public string GetFilePath(int idWell, int idCategory, int idFile, string dotExtenstion) =>
Path.Combine(RootPath, idWell.ToString(), idCategory.ToString(), $"{idFile}{dotExtention}"); GetFilePath(idWell.ToString(), idCategory.ToString(), idFile, dotExtenstion);
public string GetFilePath(string path1, string path2, int idFile, string dotExtenstion) =>
Path.Combine(RootPath, path1, path2, $"{idFile}{dotExtenstion}");
private IEnumerable<int> GetIdsFiles(int idWell) private IEnumerable<int> GetIdsFiles(int idWell)
{ {
@ -99,7 +111,7 @@ namespace AsbCloudInfrastructure.Repository
var allFilesPath = GetFilesPath(idWell); var allFilesPath = GetFilesPath(idWell);
foreach (var filePath in allFilesPath) foreach (var filePath in allFilesPath)
if(int.TryParse(Path.GetFileNameWithoutExtension(filePath), out int idFile)) if (int.TryParse(Path.GetFileNameWithoutExtension(filePath), out int idFile))
result.Add(idFile); result.Add(idFile);
return result; return result;
@ -116,6 +128,4 @@ namespace AsbCloudInfrastructure.Repository
var directoryName = Path.GetDirectoryName(filePath)!; var directoryName = Path.GetDirectoryName(filePath)!;
Directory.CreateDirectory(directoryName); Directory.CreateDirectory(directoryName);
} }
}
} }

View File

@ -128,7 +128,7 @@ namespace AsbCloudWebApi.Tests.ServicesTests
}); });
var storageRepositoryMock = new Mock<IFileStorageRepository>(); var storageRepositoryMock = new Mock<IFileStorageRepository>();
storageRepositoryMock.Setup(x => x.GetUrl(It.IsAny<int>(), It.IsAny<int>(), It.IsAny<int>(), It.IsAny<string>())) storageRepositoryMock.Setup(x => x.GetFilePath(It.IsAny<int>(), It.IsAny<int>(), It.IsAny<int>(), It.IsAny<string>()))
.Returns((int idWell, int idCategory, int idFile, string dotExtention) => { .Returns((int idWell, int idCategory, int idFile, string dotExtention) => {
return Path.Combine("files", idWell.ToString(), idCategory.ToString(), $"{idFile}{dotExtention}"); return Path.Combine("files", idWell.ToString(), idCategory.ToString(), $"{idFile}{dotExtention}");
}); });