diff --git a/src/services/AuthorApi/BookStore.Services.AuthorApi.Api/BookStore.Services.AuthorApi.Api.csproj b/src/services/AuthorApi/BookStore.Services.AuthorApi.Api/BookStore.Services.AuthorApi.Api.csproj index 48b4dcf..e7d1070 100644 --- a/src/services/AuthorApi/BookStore.Services.AuthorApi.Api/BookStore.Services.AuthorApi.Api.csproj +++ b/src/services/AuthorApi/BookStore.Services.AuthorApi.Api/BookStore.Services.AuthorApi.Api.csproj @@ -9,8 +9,6 @@ - - all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/services/AuthorApi/BookStore.Services.AuthorApi.Api/Extensions/IServiceCollectionExtensions.cs b/src/services/AuthorApi/BookStore.Services.AuthorApi.Api/Extensions/IServiceCollectionExtensions.cs index 456620f..f5a3d2e 100644 --- a/src/services/AuthorApi/BookStore.Services.AuthorApi.Api/Extensions/IServiceCollectionExtensions.cs +++ b/src/services/AuthorApi/BookStore.Services.AuthorApi.Api/Extensions/IServiceCollectionExtensions.cs @@ -1,10 +1,7 @@ using BookStore.Services.AuthorApi.Persistence; using BookStore.Services.AuthorApi.Services; using BookStore.Services.AuthorApi.Shared.Authors; -using FluentValidation; -using FluentValidation.AspNetCore; -using MicroElements.Swashbuckle.FluentValidation.AspNetCore; -using Microsoft.EntityFrameworkCore; +using BookStore.Services.Shared.Extensions; namespace BookStore.Services.AuthorApi.Api.Extensions; @@ -28,57 +25,11 @@ IConfiguration configuration .AddDaprClient(); services - .AddDbServices( - configuration - ); - - return services; - } - - private static IServiceCollection AddSwaggerServices( - this IServiceCollection services - ) - { - services - .AddEndpointsApiExplorer(); - - services - .AddSwaggerGen(options => - { - options.CustomSchemaIds(type => type.DeclaringType is null ? $"{type.Name}" : $"{type.DeclaringType?.Name}.{type.Name}"); - }) - .AddFluentValidationRulesToSwagger(); - - return services; - } + .AddFluentValidationServices(); - private static IServiceCollection AddFluentValidationServices( - this IServiceCollection services - ) - { - services - .AddValidatorsFromAssemblyContaining(); - - services - .AddFluentValidationAutoValidation(); - - return services; - } - - private static IServiceCollection AddDbServices( - this IServiceCollection services, - IConfiguration configuration - ) - { services - .AddDbContext(options => - { - options - .UseSqlServer( - configuration - .GetConnectionString("database") - ); - } + .AddDbServices( + configuration ); return services; diff --git a/src/services/AuthorApi/BookStore.Services.AuthorApi.Api/Extensions/WebApplicationExtensions.cs b/src/services/AuthorApi/BookStore.Services.AuthorApi.Api/Extensions/WebApplicationExtensions.cs index cea1797..877da36 100644 --- a/src/services/AuthorApi/BookStore.Services.AuthorApi.Api/Extensions/WebApplicationExtensions.cs +++ b/src/services/AuthorApi/BookStore.Services.AuthorApi.Api/Extensions/WebApplicationExtensions.cs @@ -1,6 +1,6 @@ using BookStore.Services.AuthorApi.Persistence; -using BookStore.Services.Shared.Middleware; using Microsoft.EntityFrameworkCore; +using BookStore.Services.Shared.Extensions; namespace BookStore.Services.AuthorApi.Api.Extensions; @@ -54,37 +54,4 @@ this WebApplication app return app; } - - private static WebApplication AddDevelopmentMiddleWare( - this WebApplication app - ) - { - app - .UseSwagger(); - - app - .UseSwaggerUI(); - - return app; - } - - private static WebApplication AddCustomMiddleware( - this WebApplication app - ) - { - app - .UseMiddleware(); - - return app; - } - - private static WebApplication AddAuthMiddleWare( - this WebApplication app - ) - { - app - .UseAuthorization(); - - return app; - } } diff --git a/src/services/BookApi/BookStore.Services.BookApi.Api/BookStore.Services.BookApi.Api.csproj b/src/services/BookApi/BookStore.Services.BookApi.Api/BookStore.Services.BookApi.Api.csproj index a92545f..50f5fde 100644 --- a/src/services/BookApi/BookStore.Services.BookApi.Api/BookStore.Services.BookApi.Api.csproj +++ b/src/services/BookApi/BookStore.Services.BookApi.Api/BookStore.Services.BookApi.Api.csproj @@ -9,8 +9,6 @@ - - all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/services/BookApi/BookStore.Services.BookApi.Api/Extensions/IServiceCollectionExtensions.cs b/src/services/BookApi/BookStore.Services.BookApi.Api/Extensions/IServiceCollectionExtensions.cs index 840dd46..3b247d6 100644 --- a/src/services/BookApi/BookStore.Services.BookApi.Api/Extensions/IServiceCollectionExtensions.cs +++ b/src/services/BookApi/BookStore.Services.BookApi.Api/Extensions/IServiceCollectionExtensions.cs @@ -1,10 +1,7 @@ using BookStore.Services.BookApi.Persistence; using BookStore.Services.BookApi.Services; using BookStore.Services.BookApi.Shared.Books; -using FluentValidation; -using FluentValidation.AspNetCore; -using MicroElements.Swashbuckle.FluentValidation.AspNetCore; -using Microsoft.EntityFrameworkCore; +using BookStore.Services.Shared.Extensions; namespace BookStore.Services.BookApi.Api.Extensions; @@ -28,57 +25,11 @@ IConfiguration configuration .AddRestServices(); services - .AddDbServices( - configuration - ); - - return services; - } - - private static IServiceCollection AddSwaggerServices( - this IServiceCollection services - ) - { - services - .AddEndpointsApiExplorer(); - - services - .AddSwaggerGen(options => - { - options.CustomSchemaIds(type => type.DeclaringType is null ? $"{type.Name}" : $"{type.DeclaringType?.Name}.{type.Name}"); - }) - .AddFluentValidationRulesToSwagger(); - - return services; - } + .AddFluentValidationServices(); - private static IServiceCollection AddFluentValidationServices( - this IServiceCollection services - ) - { - services - .AddValidatorsFromAssemblyContaining(); - - services - .AddFluentValidationAutoValidation(); - - return services; - } - - private static IServiceCollection AddDbServices( - this IServiceCollection services, - IConfiguration configuration - ) - { services - .AddDbContext(options => - { - options - .UseSqlServer( - configuration - .GetConnectionString("database") - ); - } + .AddDbServices( + configuration ); return services; diff --git a/src/services/BookApi/BookStore.Services.BookApi.Api/Extensions/WebApplicationExtensions.cs b/src/services/BookApi/BookStore.Services.BookApi.Api/Extensions/WebApplicationExtensions.cs index b0eeea0..b626b74 100644 --- a/src/services/BookApi/BookStore.Services.BookApi.Api/Extensions/WebApplicationExtensions.cs +++ b/src/services/BookApi/BookStore.Services.BookApi.Api/Extensions/WebApplicationExtensions.cs @@ -1,6 +1,6 @@ using BookStore.Services.BookApi.Persistence; -using BookStore.Services.Shared.Middleware; using Microsoft.EntityFrameworkCore; +using BookStore.Services.Shared.Extensions; namespace BookStore.Services.BookApi.Api.Extensions; @@ -60,37 +60,4 @@ this WebApplication app return app; } - - private static WebApplication AddDevelopmentMiddleWare( - this WebApplication app - ) - { - app - .UseSwagger(); - - app - .UseSwaggerUI(); - - return app; - } - - private static WebApplication AddCustomMiddleware( - this WebApplication app - ) - { - app - .UseMiddleware(); - - return app; - } - - private static WebApplication AddAuthMiddleWare( - this WebApplication app - ) - { - app - .UseAuthorization(); - - return app; - } } diff --git a/src/services/BookStore.Services.Shared/BookStore.Services.Shared.csproj b/src/services/BookStore.Services.Shared/BookStore.Services.Shared.csproj index 2e3988c..b2e4beb 100644 --- a/src/services/BookStore.Services.Shared/BookStore.Services.Shared.csproj +++ b/src/services/BookStore.Services.Shared/BookStore.Services.Shared.csproj @@ -7,8 +7,13 @@ + + + + + diff --git a/src/services/BookStore.Services.Shared/Extensions/IServiceCollectionSharedExtensions.cs b/src/services/BookStore.Services.Shared/Extensions/IServiceCollectionSharedExtensions.cs new file mode 100644 index 0000000..64cdd07 --- /dev/null +++ b/src/services/BookStore.Services.Shared/Extensions/IServiceCollectionSharedExtensions.cs @@ -0,0 +1,64 @@ +using FluentValidation; +using FluentValidation.AspNetCore; +using MicroElements.Swashbuckle.FluentValidation.AspNetCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace BookStore.Services.Shared.Extensions; + +public static class IServiceCollectionSharedExtensions +{ + public static IServiceCollection AddSwaggerServices( + this IServiceCollection services + ) + { + services + .AddEndpointsApiExplorer(); + + services + .AddSwaggerGen(options => + { + options.CustomSchemaIds(type => + type.DeclaringType is null + ? $"{type.Name}" + : $"{type.DeclaringType?.Name}.{type.Name}"); + } + ) + .AddFluentValidationRulesToSwagger(); + + return services; + } + + public static IServiceCollection AddFluentValidationServices( + this IServiceCollection services + ) where U : AbstractValidator + { + services + .AddValidatorsFromAssemblyContaining(); + + services + .AddFluentValidationAutoValidation(); + + return services; + } + + public static IServiceCollection AddDbServices( + this IServiceCollection services, + IConfiguration configuration + ) where T : DbContext + { + services + .AddDbContext(options => + { + options + .UseSqlServer( + configuration + .GetConnectionString("database") + ); + } + ); + + return services; + } +} diff --git a/src/services/BookStore.Services.Shared/Extensions/WebApplicationSharedExtensions.cs b/src/services/BookStore.Services.Shared/Extensions/WebApplicationSharedExtensions.cs new file mode 100644 index 0000000..b97f5aa --- /dev/null +++ b/src/services/BookStore.Services.Shared/Extensions/WebApplicationSharedExtensions.cs @@ -0,0 +1,40 @@ +using BookStore.Services.Shared.Middleware; +using Microsoft.AspNetCore.Builder; + +namespace BookStore.Services.Shared.Extensions; + +public static class WebApplicationSharedExtensions +{ + public static WebApplication AddDevelopmentMiddleWare( + this WebApplication app + ) + { + app + .UseSwagger(); + + app + .UseSwaggerUI(); + + return app; + } + + public static WebApplication AddCustomMiddleware( + this WebApplication app + ) + { + app + .UseMiddleware(); + + return app; + } + + public static WebApplication AddAuthMiddleWare( + this WebApplication app + ) + { + app + .UseAuthorization(); + + return app; + } +}