using FluentValidation; using Musify.Infrastructure.MassTransit; using Musify.Infrastructure.Persistence; using Musify.Application.Configuration; using Musify.Infrastructure.Services; using Musify.Api.Authentication; using Musify.Api.DataTransferObjects.PlayLists; using Musify.Api.OpenApi; using Musify.Api.Scalar; namespace Musify.Api.Extensions; public static class ServiceCollectionExtensions { public static IServiceCollection AddApplicationServices(this IServiceCollection services, IConfiguration configuration) { services.AddDatabase(configuration); services.AddApplicationStorageConfiguration(configuration); services.AddPlayListConfiguration(configuration); services.AddTrackConfiguration(configuration); services.AddStreamGatewayConfiguration(configuration); services.AddStorageService(configuration); services.AddStreamTicketService(configuration); services.AddUploadIntentConfiguration(configuration); services.AddMassTransitClient(configuration); services.AddMediator(); services.AddAuthenticationConfiguration(configuration); services.AddOpenApiConfiguration(); services.AddScalarConfiguration(); services.AddValidatorsFromAssemblyContaining(); return services; } }