using DataProviders;
using DataProviders.Buckets;
using DomainResults.Common;
namespace WeatherForecast.Services {
///
///
///
public interface IFileService {
///
///
///
///
///
///
///
(BucketFile?, IDomainResult) Get(Guid siteId, Guid userId, Guid fileId);
///
///
///
///
///
///
///
IDomainResult Delete(Guid siteId, Guid userId, Guid fileId);
}
///
///
///
public class FileService : IFileService {
private readonly ILogger _logger;
private readonly IImagesBucketDataProvider _imageBucketDataProvider;
///
///
///
///
///
public FileService(
ILogger logger,
IImagesBucketDataProvider imageBucketDataProvider
) {
_logger = logger;
_imageBucketDataProvider = imageBucketDataProvider;
}
///
///
///
///
///
///
///
public (BucketFile?, IDomainResult) Get(Guid siteId, Guid userId, Guid fileId) {
try {
var (file, result) = _imageBucketDataProvider.Download(siteId, userId, fileId);
if (!result.IsSuccess || file == null)
return (null, result);
return IDomainResult.Success(file);
}
catch (Exception ex) {
return IDomainResult.Failed(ex.Message);
}
}
///
///
///
///
///
///
///
public IDomainResult Delete(Guid siteId, Guid userId, Guid fileId) {
try {
return _imageBucketDataProvider.DeleteOne(siteId, userId, fileId);
}
catch (Exception ex) {
return IDomainResult.Failed(ex.Message);
}
}
}
}