From 97f832530a5475a51dc672ac96cdff6a65c8bc95 Mon Sep 17 00:00:00 2001 From: XShine555 Date: Tue, 24 Mar 2026 20:52:44 +0100 Subject: [PATCH] Delete temporal folders and some changes --- Infrastructure/Infrastructure.csproj | 4 -- .../GenerateAudioWorkflowPathsActivity.cs | 2 +- .../Files/TransferFilesToBucketActivity.cs | 2 +- .../GeneratePictureWorkflowPathsActivity.cs | 2 +- .../MassTransit/Consumers/MessagingHelper.cs | 2 + .../Consumers/RemoveFileConsumer.cs | 2 +- .../Consumers/RoutingSlipCleanUpConsumer.cs | 49 +++++++++++++++++++ .../MessagingDependencyInjection.cs | 9 +++- .../AudioWorkflowRoutingSlipBuilder.cs | 8 ++- .../PictureWorkflowRoutingSlipBuilder.cs | 8 ++- ...RemoveFileFromBucketRoutingSlipBuilder.cs} | 11 ++++- .../Variables/RoutingSlipVariableNames.cs | 2 +- 12 files changed, 87 insertions(+), 14 deletions(-) create mode 100644 Infrastructure/MassTransit/Consumers/RoutingSlipCleanUpConsumer.cs rename Infrastructure/MassTransit/RoutingSlip/Builders/{RemoveFileRoutingSlipBuilder.cs => RemoveFileFromBucketRoutingSlipBuilder.cs} (64%) diff --git a/Infrastructure/Infrastructure.csproj b/Infrastructure/Infrastructure.csproj index e59fe3f..98ee6a2 100644 --- a/Infrastructure/Infrastructure.csproj +++ b/Infrastructure/Infrastructure.csproj @@ -40,12 +40,8 @@ - - - - diff --git a/Infrastructure/MassTransit/Activities/Audio/GenerateAudioWorkflowPathsActivity.cs b/Infrastructure/MassTransit/Activities/Audio/GenerateAudioWorkflowPathsActivity.cs index fd0b8f8..1269dd4 100644 --- a/Infrastructure/MassTransit/Activities/Audio/GenerateAudioWorkflowPathsActivity.cs +++ b/Infrastructure/MassTransit/Activities/Audio/GenerateAudioWorkflowPathsActivity.cs @@ -45,7 +45,7 @@ namespace Musify.Infrastructure.Messaging.Activities await processTrackingStore.CompleteStepAsync(processId, stepId, executeContext.CancellationToken); return executeContext.CompletedWithVariables(new Dictionary { - [RoutingSlipVariableNames.Workflow.TempDirectory] = workingDirectory, + [RoutingSlipVariableNames.Workflow.TemporalDirectory] = workingDirectory, [RoutingSlipVariableNames.Audio.WorkingDirectory] = workingDirectory, [RoutingSlipVariableNames.Audio.SourceFilePath] = sourceFilePath, [RoutingSlipVariableNames.Audio.TranscodedDirectory] = workingDirectory diff --git a/Infrastructure/MassTransit/Activities/Files/TransferFilesToBucketActivity.cs b/Infrastructure/MassTransit/Activities/Files/TransferFilesToBucketActivity.cs index 8ee6c9d..2a2df4a 100644 --- a/Infrastructure/MassTransit/Activities/Files/TransferFilesToBucketActivity.cs +++ b/Infrastructure/MassTransit/Activities/Files/TransferFilesToBucketActivity.cs @@ -46,7 +46,7 @@ namespace Musify.Infrastructure.Messaging.Activities try { var uploadedKeys = Directory.GetFiles(folderPath) - .Select(file => $"{destinationKeyName}/{Path.GetFileName(file)}") + .Select(file => $"{destinationKeyName}/{Path.GetFileName(file) }") .ToArray(); var transferFilesResult = await storageHandler.TransferFilesAsync( diff --git a/Infrastructure/MassTransit/Activities/Pictures/GeneratePictureWorkflowPathsActivity.cs b/Infrastructure/MassTransit/Activities/Pictures/GeneratePictureWorkflowPathsActivity.cs index 51dfc21..8899d00 100644 --- a/Infrastructure/MassTransit/Activities/Pictures/GeneratePictureWorkflowPathsActivity.cs +++ b/Infrastructure/MassTransit/Activities/Pictures/GeneratePictureWorkflowPathsActivity.cs @@ -56,7 +56,7 @@ namespace Musify.Infrastructure.Messaging.Activities await processTrackingStore.CompleteStepAsync(processId, stepId, executeContext.CancellationToken); return executeContext.CompletedWithVariables(new Dictionary { - [RoutingSlipVariableNames.Workflow.TempDirectory] = workingDirectory, + [RoutingSlipVariableNames.Workflow.TemporalDirectory] = workingDirectory, [RoutingSlipVariableNames.Picture.OriginalFilePath] = sourceFilePath, [RoutingSlipVariableNames.Picture.SmallResizedFilePath] = smallPictureFilePath, [RoutingSlipVariableNames.Picture.MediumResizedFilePath] = mediumPictureFilePath, diff --git a/Infrastructure/MassTransit/Consumers/MessagingHelper.cs b/Infrastructure/MassTransit/Consumers/MessagingHelper.cs index d08d82a0..e5a3ec0 100644 --- a/Infrastructure/MassTransit/Consumers/MessagingHelper.cs +++ b/Infrastructure/MassTransit/Consumers/MessagingHelper.cs @@ -5,5 +5,7 @@ namespace Musify.Infrastructure.Messaging.Consumers internal static Uri BuildExecuteActivityUri(string endpointName) => new($"queue:{endpointName}_execute"); internal static Uri BuildCompensateActivityUri(string endpointName) => new($"queue:{endpointName}_compensate"); + + internal static Uri BuildConsumerUri(string endpointName) => new($"queue:{endpointName}"); } } \ No newline at end of file diff --git a/Infrastructure/MassTransit/Consumers/RemoveFileConsumer.cs b/Infrastructure/MassTransit/Consumers/RemoveFileConsumer.cs index eb9f79f..5e1c644 100644 --- a/Infrastructure/MassTransit/Consumers/RemoveFileConsumer.cs +++ b/Infrastructure/MassTransit/Consumers/RemoveFileConsumer.cs @@ -6,7 +6,7 @@ namespace Musify.Infrastructure.Messaging.Consumers { public class RemoveFileConsumer( IBus bus, - RemoveFileRoutingSlipBuilder routingSlipBuilder) + RemoveFileFromBucketRoutingSlipBuilder routingSlipBuilder) : IConsumer { public const string QueueName = "Remove-File"; diff --git a/Infrastructure/MassTransit/Consumers/RoutingSlipCleanUpConsumer.cs b/Infrastructure/MassTransit/Consumers/RoutingSlipCleanUpConsumer.cs new file mode 100644 index 0000000..f98390c --- /dev/null +++ b/Infrastructure/MassTransit/Consumers/RoutingSlipCleanUpConsumer.cs @@ -0,0 +1,49 @@ +using MassTransit; +using MassTransit.Courier.Contracts; +using Microsoft.Extensions.Logging; +using Musify.Infrastructure.Messaging; + +namespace Musify.Infrastructure.MassTransit.Consumers +{ + public class RoutingSlipCleanUpConsumer( + ILogger logger) : + IConsumer, + IConsumer + { + public const string QueueName = "routing-slip-events"; + + public Task Consume(ConsumeContext consumeContext) + => DeleteFolder(consumeContext.Message.Variables); + + public Task Consume(ConsumeContext consumeContext) + => DeleteFolder(consumeContext.Message.Variables); + + Task DeleteFolder(IDictionary variables) + { + if (!variables.TryGetValue(RoutingSlipVariableNames.Workflow.TemporalDirectory, out var pathObject)) + return Task.CompletedTask; + + var pathString = pathObject.ToString(); + + if (string.IsNullOrEmpty(pathString)) + return Task.CompletedTask; + + try + { + Directory.Delete(pathString, recursive: true); + logger.LogInformation("Deleted temporal directory at path {Path}", pathString); + } + catch (DirectoryNotFoundException directoryNotFoundException) + { + logger.LogWarning(directoryNotFoundException, "Temporal directory at path {Path} was not found for deletion", pathString); + } + catch (Exception exception) + { + logger.LogError(exception, "Failed to delete temporal directory at path {Path}", pathString); + throw; + } + + return Task.CompletedTask; + } + } +} \ No newline at end of file diff --git a/Infrastructure/MassTransit/DependencyInjection/MessagingDependencyInjection.cs b/Infrastructure/MassTransit/DependencyInjection/MessagingDependencyInjection.cs index 1fff97a..3c35432 100644 --- a/Infrastructure/MassTransit/DependencyInjection/MessagingDependencyInjection.cs +++ b/Infrastructure/MassTransit/DependencyInjection/MessagingDependencyInjection.cs @@ -1,6 +1,7 @@ using MassTransit; using Microsoft.Extensions.DependencyInjection; using Musify.Infrastructure.Configuration; +using Musify.Infrastructure.MassTransit.Consumers; using Musify.Infrastructure.Messaging.Activities; using Musify.Infrastructure.Messaging.Activities.Arguments; using Musify.Infrastructure.Messaging.Activities.Logs; @@ -29,7 +30,7 @@ namespace Musify.Infrastructure.Messaging { serviceDescriptors.AddScoped(); serviceDescriptors.AddScoped(); - serviceDescriptors.AddScoped(); + serviceDescriptors.AddScoped(); serviceDescriptors.AddMassTransit(options => { @@ -37,6 +38,7 @@ namespace Musify.Infrastructure.Messaging options.AddConsumer(); options.AddConsumer(); options.AddConsumer(); + options.AddConsumer(); options.AddExecuteActivity(); options.AddExecuteActivity(); @@ -77,6 +79,11 @@ namespace Musify.Infrastructure.Messaging endpointConfigurator.ConfigureConsumer(busRegistrationContext); } ); + busFactoryConfigurator.ReceiveEndpoint(RoutingSlipCleanUpConsumer.QueueName, endpointConfigurator => + { + endpointConfigurator.ConfigureConsumer(busRegistrationContext); + } ); + ConfigureExecuteActivityEndpoint( busFactoryConfigurator, busRegistrationContext, diff --git a/Infrastructure/MassTransit/RoutingSlip/Builders/AudioWorkflowRoutingSlipBuilder.cs b/Infrastructure/MassTransit/RoutingSlip/Builders/AudioWorkflowRoutingSlipBuilder.cs index b3cf18a..11ae04b 100644 --- a/Infrastructure/MassTransit/RoutingSlip/Builders/AudioWorkflowRoutingSlipBuilder.cs +++ b/Infrastructure/MassTransit/RoutingSlip/Builders/AudioWorkflowRoutingSlipBuilder.cs @@ -1,6 +1,8 @@ using MassTransit; +using MassTransit.Courier.Contracts; using Musify.Application.Events; using Musify.Infrastructure.Configuration; +using Musify.Infrastructure.MassTransit.Consumers; using Musify.Infrastructure.Messaging.Activities; using Musify.Infrastructure.Messaging.Activities.Arguments; using Musify.Infrastructure.Messaging.Consumers; @@ -15,6 +17,10 @@ namespace Musify.Infrastructure.Messaging.RoutingSlip.Builders routingSlipBuilder.AddVariable(RoutingSlipVariableNames.Workflow.CorrelationId, correlationId ?? Guid.Empty); + routingSlipBuilder.AddSubscription( + MessagingHelper.BuildConsumerUri(RoutingSlipCleanUpConsumer.QueueName), + RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted); + routingSlipBuilder.AddActivity( ActivityNames.GenerateAudioWorkflowPaths, MessagingHelper.BuildExecuteActivityUri(GenerateAudioWorkflowPathsActivity.ExecuteEndpointName), @@ -35,7 +41,7 @@ namespace Musify.Infrastructure.Messaging.RoutingSlip.Builders MessagingHelper.BuildExecuteActivityUri(TranscodeDashAudioActivity.ExecuteEndpointName), new TranscodeDashAudioArguments( RoutingSlipVariableNames.Audio.SourceFilePath, - RoutingSlipVariableNames.Workflow.TempDirectory)); + RoutingSlipVariableNames.Workflow.TemporalDirectory)); routingSlipBuilder.AddActivity( ActivityNames.UploadFiles, diff --git a/Infrastructure/MassTransit/RoutingSlip/Builders/PictureWorkflowRoutingSlipBuilder.cs b/Infrastructure/MassTransit/RoutingSlip/Builders/PictureWorkflowRoutingSlipBuilder.cs index 95d7b5c..d81366e 100644 --- a/Infrastructure/MassTransit/RoutingSlip/Builders/PictureWorkflowRoutingSlipBuilder.cs +++ b/Infrastructure/MassTransit/RoutingSlip/Builders/PictureWorkflowRoutingSlipBuilder.cs @@ -1,6 +1,8 @@ using MassTransit; +using MassTransit.Courier.Contracts; using Musify.Application.Events; using Musify.Infrastructure.Configuration; +using Musify.Infrastructure.MassTransit.Consumers; using Musify.Infrastructure.Messaging.Activities; using Musify.Infrastructure.Messaging.Activities.Arguments; using Musify.Infrastructure.Messaging.Consumers; @@ -25,6 +27,10 @@ namespace Musify.Infrastructure.Messaging.RoutingSlip.Builders message.LargePictureHeight, correlationId); + routingSlipBuilder.AddSubscription( + MessagingHelper.BuildConsumerUri(RoutingSlipCleanUpConsumer.QueueName), + RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted); + routingSlipBuilder.AddActivity( ActivityNames.UpdateTrackPicture, MessagingHelper.BuildExecuteActivityUri(UpdateTrackPictureActivity.ExecuteEndpointName), @@ -134,7 +140,7 @@ namespace Musify.Infrastructure.Messaging.RoutingSlip.Builders MessagingHelper.BuildExecuteActivityUri(TransferFilesToBucketActivity.ExecuteEndpointName), new TransferFilesToBucketArguments( sourceBucketName, - RoutingSlipVariableNames.Workflow.TempDirectory, + RoutingSlipVariableNames.Workflow.TemporalDirectory, DestinationKeyNameVariableName: RoutingSlipVariableNames.Picture.DestinationFolderName)); return routingSlipBuilder; diff --git a/Infrastructure/MassTransit/RoutingSlip/Builders/RemoveFileRoutingSlipBuilder.cs b/Infrastructure/MassTransit/RoutingSlip/Builders/RemoveFileFromBucketRoutingSlipBuilder.cs similarity index 64% rename from Infrastructure/MassTransit/RoutingSlip/Builders/RemoveFileRoutingSlipBuilder.cs rename to Infrastructure/MassTransit/RoutingSlip/Builders/RemoveFileFromBucketRoutingSlipBuilder.cs index b6aa05a..a45bdb2 100644 --- a/Infrastructure/MassTransit/RoutingSlip/Builders/RemoveFileRoutingSlipBuilder.cs +++ b/Infrastructure/MassTransit/RoutingSlip/Builders/RemoveFileFromBucketRoutingSlipBuilder.cs @@ -1,11 +1,14 @@ using MassTransit; +using MassTransit.Courier.Contracts; using Musify.Application.Events; +using Musify.Infrastructure.MassTransit.Consumers; using Musify.Infrastructure.Messaging.Activities; +using Musify.Infrastructure.Messaging.Activities.Arguments; using Musify.Infrastructure.Messaging.Consumers; namespace Musify.Infrastructure.Messaging.RoutingSlip.Builders { - public class RemoveFileRoutingSlipBuilder + public class RemoveFileFromBucketRoutingSlipBuilder { public RoutingSlipBuilder Build(RemoveFileEvent message, Guid? correlationId) { @@ -13,10 +16,14 @@ namespace Musify.Infrastructure.Messaging.RoutingSlip.Builders routingSlipBuilder.AddVariable(RoutingSlipVariableNames.Workflow.CorrelationId, correlationId ?? Guid.Empty); + routingSlipBuilder.AddSubscription( + MessagingHelper.BuildConsumerUri(RoutingSlipCleanUpConsumer.QueueName), + RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted); + routingSlipBuilder.AddActivity( ActivityNames.RemoveFile, MessagingHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName), - new Activities.Arguments.RemoveFileFromBucketArguments( + new RemoveFileFromBucketArguments( message.BucketName, message.KeyName)); diff --git a/Infrastructure/MassTransit/RoutingSlip/Variables/RoutingSlipVariableNames.cs b/Infrastructure/MassTransit/RoutingSlip/Variables/RoutingSlipVariableNames.cs index 3b9bbb0..760b767 100644 --- a/Infrastructure/MassTransit/RoutingSlip/Variables/RoutingSlipVariableNames.cs +++ b/Infrastructure/MassTransit/RoutingSlip/Variables/RoutingSlipVariableNames.cs @@ -4,7 +4,7 @@ namespace Musify.Infrastructure.Messaging { internal static class Workflow { - internal const string TempDirectory = "Workflow.TempDirectory"; + internal const string TemporalDirectory = "Workflow.TemporalDirectory"; internal const string CorrelationId = "Workflow.CorrelationId"; }