using Model;
using Model.Dto.System;
using Model.Entity.System;
using System.IO;
using System.Threading.Tasks;
namespace Service.Interface
{
///
/// 文件存储 Provider 抽象(Local 落地;MinIO/OSS 留扩展点)
/// 实现类命名约定:XxxFileStorageProvider,由 DependencyInjection 手动注册到 IFileStorageProvider
/// FileStorageService 通过 IEnumerable<IFileStorageProvider> 按配置 Provider 字段挑选实例
///
public interface IFileStorageProvider
{
/// Provider 标识(local/minio/oss),与 FileStorageConfigEntity.Provider 对应
string ProviderName { get; }
/// 上传文件,返回存储后的文件名(含相对路径)、访问 URL、扩展名、大小
Task> UploadAsync(Stream stream, string originalName, long size, FileStorageConfigEntity config);
/// 删除文件(按存储后的相对文件名)
Task DeleteAsync(string storedFileName, FileStorageConfigEntity config);
/// 测试连接/可用性(Local:检查目录可写;MinIO/OSS:检查 Bucket 可访问)
Task TestConnectionAsync(FileStorageConfigEntity config);
}
}