mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-05-24 00:52:23 -04:00
* feat: implement anonymous usage data collection Co-authored-by: Joseph Milazzo <joseph.v.milazzo@gmail.com>
72 lines
2.8 KiB
C#
72 lines
2.8 KiB
C#
using System;
|
|
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<IStatsService, StatsService>();
|
|
services.AddScoped<ITaskScheduler, TaskScheduler>();
|
|
services.AddScoped<IDirectoryService, DirectoryService>();
|
|
services.AddScoped<ITokenService, TokenService>();
|
|
services.AddScoped<ICacheService, CacheService>();
|
|
services.AddScoped<IUnitOfWork, UnitOfWork>();
|
|
services.AddScoped<IScannerService, ScannerService>();
|
|
services.AddScoped<IArchiveService, ArchiveService>();
|
|
services.AddScoped<IMetadataService, MetadataService>();
|
|
services.AddScoped<IBackupService, BackupService>();
|
|
services.AddScoped<ICleanupService, CleanupService>();
|
|
services.AddScoped<IBookService, BookService>();
|
|
|
|
services.AddSqLite(config, env);
|
|
services.ConfigRepositories();
|
|
|
|
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<DataContext>(options =>
|
|
{
|
|
options.UseSqlite(config.GetConnectionString("DefaultConnection"));
|
|
options.EnableSensitiveDataLogging(env.IsDevelopment() || Configuration.GetLogLevel(Program.GetAppSettingFilename()).Equals("Debug"));
|
|
});
|
|
|
|
return services;
|
|
}
|
|
|
|
private static IServiceCollection ConfigRepositories(this IServiceCollection services)
|
|
{
|
|
services.AddScoped<ISettingsRepository, SettingsRepository>();
|
|
services.AddScoped<IFileRepository, FileRepository>();
|
|
|
|
return services;
|
|
}
|
|
|
|
public static IServiceCollection AddStartupTask<T>(this IServiceCollection services)
|
|
where T : class, IStartupTask
|
|
=> services.AddTransient<IStartupTask, T>();
|
|
}
|
|
} |