using API.Data; using API.Helpers; using API.Interfaces; using API.Interfaces.Services; using API.Services; using API.Services.Tasks; using Kavita.Common; using Microsoft.AspNetCore.Hosting; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; namespace API.Extensions { public static class ApplicationServiceExtensions { public static IServiceCollection AddApplicationServices(this IServiceCollection services, IConfiguration config, IWebHostEnvironment env) { services.AddAutoMapper(typeof(AutoMapperProfiles).Assembly); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddSqLite(config, env); services.AddLogging(loggingBuilder => { var loggingSection = config.GetSection("Logging"); loggingBuilder.AddFile(loggingSection); }); return services; } private static IServiceCollection AddSqLite(this IServiceCollection services, IConfiguration config, IWebHostEnvironment env) { services.AddDbContext(options => { options.UseSqlite(config.GetConnectionString("DefaultConnection")); options.EnableSensitiveDataLogging(env.IsDevelopment() || Configuration.GetLogLevel(Program.GetAppSettingFilename()).Equals("Debug")); }); return services; } } }