using MassTransit; using Microsoft.Extensions.Logging; using Musify.Application.Abstractions.Infrastructure; using Musify.Infrastructure.MassTransit.Arguments; namespace Musify.Infrastructure.MassTransit.Activities.Files { internal class RemoveFolderFromBucketActivity( IStorageService storageHandler, ILogger logger) : IExecuteActivity { public const string ExecuteEndpointName = "remove-folder-from-bucket"; public async Task Execute(ExecuteContext executeContext) { var folderKey = executeContext.GetVariable(executeContext.Arguments.FolderKeyVariable); ArgumentException.ThrowIfNullOrEmpty(folderKey, nameof(folderKey)); try { await storageHandler.RemoveFolderAsync( executeContext.Arguments.Bucket, folderKey, executeContext.CancellationToken); logger.LogInformation("Removed folder {FolderKey} from bucket {Bucket}", folderKey, executeContext.Arguments.Bucket); return executeContext.Completed(); } catch (Exception exception) { logger.LogError(exception, "Failed to remove folder {FolderKey} from bucket {Bucket}", folderKey, executeContext.Arguments.Bucket); throw; } } } }