using AsbCloudApp.Data; using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; namespace AsbCloudApp.Repositories { #nullable enable /// <summary> /// Репозиторий хранения фалов /// </summary> public interface IFileStorageRepository { /// <summary> /// Получение длинны фала и проверка его наличия, если отсутствует падает исключение /// </summary> /// <param name="srcFilePath"></param> /// <returns></returns> long GetFileLength(string srcFilePath); /// <summary> /// Перемещение файла /// </summary> /// <param name="srcFilePath"></param> /// <param name="filePath"></param> void MoveFile(string srcFilePath, string filePath); /// <summary> /// Копирование файла /// </summary> /// <param name="filePathRec"></param> /// <param name="fileStreamSrc"></param> /// <param name="token"></param> /// <returns></returns> Task SaveFileAsync(string filePathRec, Stream fileStreamSrc, CancellationToken token); /// <summary> /// Удаление файла /// </summary> /// <param name="filesName"></param> void DeleteFile(IEnumerable<string> filesName); /// <summary> /// Удаление всех файлов с диска о которых нет информации в базе /// </summary> /// <param name="idWell"></param> /// <param name="idsFiles"></param> int DeleteFilesNotInList(int idWell, IEnumerable<int> idsFiles); /// <summary> /// Вывод списка всех файлов из базы, для которых нет файла на диске /// </summary> /// <param name="files"></param> /// <returns></returns> IEnumerable<FileInfoDto> GetListFilesNotDisc(IEnumerable<FileInfoDto> files); /// <summary> /// Получение пути к файлу /// </summary> /// <param name="idWell"></param> /// <param name="idCategory"></param> /// <param name="fileFullName"></param> /// <param name="fileId"></param> /// <returns></returns> string MakeFilePath(int idWell, int idCategory, string fileFullName, int fileId); /// <summary> /// Получить путь для скачивания /// </summary> /// <param name="idWell"></param> /// <param name="idCategory"></param> /// <param name="idFile"></param> /// <param name="dotExtention"></param> /// <returns></returns> string GetUrl(int idWell, int idCategory, int idFile, string dotExtention); } #nullable disable }