using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Mirea.Api.Dto.Common;
using Mirea.Api.Endpoint.Common.Services.Security;
using Mirea.Api.Endpoint.Configuration.Model;
using Mirea.Api.Security;
using Mirea.Api.Security.Common.Interfaces;

namespace Mirea.Api.Endpoint.Configuration.Core.Startup;

public static class SecureConfiguration
{
    public static IServiceCollection AddSecurity(this IServiceCollection services, IConfiguration configuration)
    {
        services.AddSecurityServices(configuration);

        services.AddSingleton<IRevokedToken, MemoryRevokedTokenService>();

        if (configuration.Get<GeneralConfig>()?.CacheSettings?.TypeDatabase == CacheType.Redis)
            services.AddSingleton<ICacheService, DistributedCacheService>();
        else
            services.AddSingleton<ICacheService, MemoryCacheService>();

        return services;
    }
}