Unify picture configuration and options registration

This commit is contained in:
2026-09-24 05:23:40 +02:00
parent 5e819d7676
commit 4d943e068e
51 changed files with 384 additions and 525 deletions
@@ -1,23 +0,0 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
namespace Musify.Infrastructure.MassTransit;
public static partial class MassTransitDependencyInjection
{
private static void RegisterValidatedOptions<TOptions>(
IServiceCollection services,
IConfiguration configuration,
string sectionName)
where TOptions : class
{
services
.AddOptionsWithValidateOnStart<TOptions>()
.Bind(configuration.GetRequiredSection(sectionName))
.ValidateDataAnnotations();
services.AddSingleton(serviceProvider =>
serviceProvider.GetRequiredService<IOptions<TOptions>>().Value);
}
}
@@ -5,20 +5,18 @@ using Musify.Application.Contracts;
using Musify.Infrastructure.Configuration;
using Musify.Infrastructure.MassTransit.Sagas;
using Musify.Infrastructure.Persistence;
using Musify.Application.Configuration;
namespace Musify.Infrastructure.MassTransit;
public static partial class MassTransitDependencyInjection
{
public static IServiceCollection AddMassTransitClient(this IServiceCollection serviceDescriptors, IConfiguration configuration)
public static IServiceCollection AddMassTransitClient(this IServiceCollection services, IConfiguration configuration)
{
RegisterValidatedOptions<MassTransitConfiguration>(
serviceDescriptors,
configuration,
MassTransitConfiguration.SectionName);
services.AddValidatedOptions<MassTransitConfiguration>(configuration);
serviceDescriptors.AddScoped<IEventBus, MassTransitEventBus>();
serviceDescriptors.AddMassTransit(options =>
services.AddScoped<IEventBus, MassTransitEventBus>();
services.AddMassTransit(options =>
{
options.AddEntityFrameworkOutbox<Database>(outbox =>
{
@@ -35,24 +33,18 @@ public static partial class MassTransitDependencyInjection
busRegistrationContext.GetRequiredService<MassTransitConfiguration>()));
});
return serviceDescriptors;
return services;
}
public static IServiceCollection AddMassTransitConsumers(this IServiceCollection serviceDescriptors, IConfiguration configuration)
public static IServiceCollection AddMassTransitConsumers(this IServiceCollection services, IConfiguration configuration)
{
RegisterValidatedOptions<MassTransitConfiguration>(
serviceDescriptors,
configuration,
MassTransitConfiguration.SectionName);
services.AddValidatedOptions<MassTransitConfiguration>(configuration);
RegisterValidatedOptions<WorkerConfiguration>(
serviceDescriptors,
configuration,
WorkerConfiguration.SectionName);
services.AddValidatedOptions<WorkerConfiguration>(configuration);
RegisterRoutingSlipBuilders(serviceDescriptors);
RegisterRoutingSlipBuilders(services);
serviceDescriptors.AddMassTransit(options =>
services.AddMassTransit(options =>
{
options.AddEntityFrameworkOutbox<Database>(outbox =>
{
@@ -107,7 +99,7 @@ public static partial class MassTransitDependencyInjection
});
});
return serviceDescriptors;
return services;
}
private static void UseStandardRetry(IReceiveEndpointConfigurator endpointConfigurator) =>
@@ -59,7 +59,7 @@ public class DeleteAlbumRoutingSlipBuilder(
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
new RemoveFileFromBucketArguments(
bucket,
routes.BuildSmallPicturePath(smallName)));
routes.BuildPicturePath(PictureSize.Small, smallName)));
}
if (album.Pictures.MediumName is { } mediumName)
@@ -69,7 +69,7 @@ public class DeleteAlbumRoutingSlipBuilder(
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
new RemoveFileFromBucketArguments(
bucket,
routes.BuildMediumPicturePath(mediumName)));
routes.BuildPicturePath(PictureSize.Medium, mediumName)));
}
if (album.Pictures.LargeName is { } largeName)
@@ -79,7 +79,7 @@ public class DeleteAlbumRoutingSlipBuilder(
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
new RemoveFileFromBucketArguments(
bucket,
routes.BuildLargePicturePath(largeName)));
routes.BuildPicturePath(PictureSize.Large, largeName)));
}
}
@@ -59,7 +59,7 @@ public class DeletePlayListRoutingSlipBuilder(
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
new RemoveFileFromBucketArguments(
bucket,
routes.BuildSmallPicturePath(smallName)));
routes.BuildPicturePath(PictureSize.Small, smallName)));
}
if (playList.Pictures.MediumName is { } mediumName)
@@ -69,7 +69,7 @@ public class DeletePlayListRoutingSlipBuilder(
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
new RemoveFileFromBucketArguments(
bucket,
routes.BuildMediumPicturePath(mediumName)));
routes.BuildPicturePath(PictureSize.Medium, mediumName)));
}
if (playList.Pictures.LargeName is { } largeName)
@@ -79,7 +79,7 @@ public class DeletePlayListRoutingSlipBuilder(
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
new RemoveFileFromBucketArguments(
bucket,
routes.BuildLargePicturePath(largeName)));
routes.BuildPicturePath(PictureSize.Large, largeName)));
}
}
@@ -58,21 +58,21 @@ public class DeleteTrackRoutingSlipBuilder(
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
new RemoveFileFromBucketArguments(
bucket,
trackConfiguration.Routes.BuildSmallPicturePath(track.Pictures.SmallName)));
trackConfiguration.Routes.BuildPicturePath(PictureSize.Small, track.Pictures.SmallName)));
routingSlipBuilder.AddActivity(
ActivityNames.RemoveTrackMediumPicture,
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
new RemoveFileFromBucketArguments(
bucket,
trackConfiguration.Routes.BuildMediumPicturePath(track.Pictures.MediumName)));
trackConfiguration.Routes.BuildPicturePath(PictureSize.Medium, track.Pictures.MediumName)));
routingSlipBuilder.AddActivity(
ActivityNames.RemoveTrackLargePicture,
EndpointHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
new RemoveFileFromBucketArguments(
bucket,
trackConfiguration.Routes.BuildLargePicturePath(track.Pictures.LargeName)));
trackConfiguration.Routes.BuildPicturePath(PictureSize.Large, track.Pictures.LargeName)));
}
if (!string.IsNullOrEmpty(track.Audio.OriginalName))