using AsbCloudApp.Data;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace AsbCloudApp.Repositories;
///
/// Репозиторий хранения фалов
///
public interface IFileStorageRepository
{
///
/// Получение длинны фала и проверка его наличия, если отсутствует падает исключение
///
///
///
long GetFileLength(string srcFilePath);
///
/// Перемещение файла
///
///
///
void MoveFile(string srcFilePath, string filePath);
///
/// Копирование файла
///
///
///
///
///
Task SaveFileAsync(string filePathRec, Stream fileStreamSrc, CancellationToken token);
///
/// Удаление пачки файлов
///
///
void DeleteFiles(IEnumerable filesName);
///
/// Удаление одного файла
///
///
void DeleteFile(string fileName);
///
/// Удаление директории
///
///
///
void DeleteDirectory(string path, bool isRecursive);
///
/// Удаление всех файлов с диска о которых нет информации в базе
///
///
///
int DeleteFilesNotInList(int idWell, IEnumerable idsFiles);
///
/// Вывод списка всех файлов из базы, для которых нет файла на диске
///
///
///
IEnumerable GetListFilesNotDisc(IEnumerable files);
///
/// Создание пути для сохранения файла связанного со скважиной
///
///
///
///
///
///
string MakeFilePath(int idWell, int idCategory, string fileFullName, int fileId);
///
/// Создание пути для сохранения файла
///
///
///
///
///
string MakeFilePath(string path1, string path2, string path3);
///
/// Получение пути к файлу связанного со скважиной
///
///
///
///
///
///
string GetFilePath(int idWell, int idCategory, int idFile, string dotExtenstion);
///
/// Получение пути файла лежащего на диске
///
///
///
///
///
///
string GetFilePath(string path1, string path2, int idFile, string dotExtenstion);
}