diff --git a/OltivaFlix.Domain/DI/DomainRequestHandlers.cs b/OltivaFlix.Domain/DI/IServiceCollectionExtensions.cs similarity index 65% rename from OltivaFlix.Domain/DI/DomainRequestHandlers.cs rename to OltivaFlix.Domain/DI/IServiceCollectionExtensions.cs index 1d39a2a..5c64178 100644 --- a/OltivaFlix.Domain/DI/DomainRequestHandlers.cs +++ b/OltivaFlix.Domain/DI/IServiceCollectionExtensions.cs @@ -3,11 +3,11 @@ namespace OltivaFlix.Domain.DI { - public static class DomainRequestHandlers + public static class IServiceCollectionExtensions { public static IServiceCollection RegisterDomainRequestHandler(this IServiceCollection services) { - services.AddDomainRequestHandlers(typeof(DomainRequestHandlers).Assembly); + services.AddDomainRequestHandlers(typeof(IServiceCollectionExtensions).Assembly); return services; } diff --git a/OltivaFlix.Domain/Handler/GetMovieCommandHandler.cs b/OltivaFlix.Domain/Handler/GetMovieCommandHandler.cs index dd5e3a8..d56e566 100644 --- a/OltivaFlix.Domain/Handler/GetMovieCommandHandler.cs +++ b/OltivaFlix.Domain/Handler/GetMovieCommandHandler.cs @@ -4,6 +4,7 @@ using Liquid.Core.Telemetry; using Liquid.Domain; using MediatR; +using Microsoft.Extensions.Configuration; using OltivaFlix.Domain.Model; using OltivaFlix.Domain.Queries; using OltivaFlix.Domain.Service; @@ -17,12 +18,17 @@ public class GetMovieCommandHandler : RequestHandlerBase, IRequestHandler("OltivaCache:CacheTimeMinutes", defaultValue: 10); } public async Task Handle(GetMovieQuery request, CancellationToken cancellationToken) @@ -40,7 +49,7 @@ public async Task Handle(GetMovieQuery request, CancellationToken cancell { return _movieService.GetMovie(request.ImdbId).Result; }, - expirationDuration: System.TimeSpan.FromMinutes(10)); + expirationDuration: System.TimeSpan.FromMinutes(_cacheMinutes)); } } } \ No newline at end of file diff --git a/OltivaFlix.Domain/OltivaFlix.Domain.csproj b/OltivaFlix.Domain/OltivaFlix.Domain.csproj index 377893c..a1978bb 100644 --- a/OltivaFlix.Domain/OltivaFlix.Domain.csproj +++ b/OltivaFlix.Domain/OltivaFlix.Domain.csproj @@ -8,6 +8,7 @@ + diff --git a/OltivaFlix.Infrastructure/DI/RegisterHttpServices.cs b/OltivaFlix.Infrastructure/DI/IServiceCollectionExtensions.cs similarity index 65% rename from OltivaFlix.Infrastructure/DI/RegisterHttpServices.cs rename to OltivaFlix.Infrastructure/DI/IServiceCollectionExtensions.cs index f4d3ad2..2c5f354 100644 --- a/OltivaFlix.Infrastructure/DI/RegisterHttpServices.cs +++ b/OltivaFlix.Infrastructure/DI/IServiceCollectionExtensions.cs @@ -3,13 +3,15 @@ namespace OltivaFlix.Infrastructure.DI { - public static class RegisterHttpServices + public static class IServiceCollectionExtensions { public static IServiceCollection RegisterHttpService(this IServiceCollection services) { - services.AddHttpServices(typeof(RegisterHttpServices).Assembly); + services.AddHttpServices(typeof(IServiceCollectionExtensions).Assembly); return services; } + + } } diff --git a/OltivaFlix.Webapi/Startup.cs b/OltivaFlix.Webapi/Startup.cs index a6c8c96..fb8fa0a 100644 --- a/OltivaFlix.Webapi/Startup.cs +++ b/OltivaFlix.Webapi/Startup.cs @@ -10,6 +10,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; using OltivaFlix.Domain.DI; using OltivaFlix.Domain.Queries; using OltivaFlix.Domain.Service; @@ -20,7 +21,7 @@ namespace OltivaFlix.Webapi { public class Startup { - public IConfiguration _configuration { get; } + private readonly IConfiguration _configuration; public Startup(IConfiguration configuration) { @@ -30,6 +31,8 @@ public Startup(IConfiguration configuration) // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { + ConfigureCache(services); + services .AddControllers() .AddJsonOptions(options => @@ -53,10 +56,28 @@ public void ConfigureServices(IServiceCollection services) services.ConfigureLiquidHttp(); services.AddLiquidSwagger(); - //services.AddLightRedisCache(); - services.AddLightMemoryCache(); + + + // + services.RegisterDomainRequestHandler(); services.RegisterHttpService(); + + } + + private void ConfigureCache(IServiceCollection services) + { + string cacheType = _configuration["OltivaCache:CacheType"]; + + switch (cacheType.ToUpper()) + { + case "REDIS": + services.AddLightRedisCache(); + break; + default: + services.AddLightMemoryCache(); + break; + } } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. diff --git a/OltivaFlix.Webapi/appsettings.json b/OltivaFlix.Webapi/appsettings.json index f3b8ec4..03396d0 100644 --- a/OltivaFlix.Webapi/appsettings.json +++ b/OltivaFlix.Webapi/appsettings.json @@ -29,6 +29,10 @@ "redis": { "connectionString": "127.0.0.1:6379" }, + "OltivaCache": { + "CacheTimeMinutes": 10, + "CacheType": "Memory" + }, "services": [ { "id": "MovieServiceHttpClient",