using Lagerbestand.Models;
namespace Lagerbestand.Services;
///
/// Service interface for file storage operations (disk/NFS based)
///
public interface IFileStorageService
{
///
/// Gets the current storage settings
///
Task GetSettingsAsync();
///
/// Updates the storage settings
///
Task SaveSettingsAsync(FileStorageSettings settings);
///
/// Validates if the storage path is accessible and writable
///
Task<(bool IsValid, string? ErrorMessage)> ValidateStoragePathAsync(string path);
///
/// Saves a file to storage and returns the relative path
///
Task SaveFileAsync(byte[] content, string fileName, string subDirectory = "attachments");
///
/// Reads a file from storage
///
Task ReadFileAsync(string relativePath);
///
/// Deletes a file from storage
///
Task DeleteFileAsync(string relativePath);
///
/// Checks if a file exists in storage
///
Task FileExistsAsync(string relativePath);
///
/// Gets the file size in bytes
///
Task GetFileSizeAsync(string relativePath);
}