Migrate DI container to Autofac

This commit is contained in:
Ske
2020-01-26 01:27:45 +01:00
parent 4311cb3ad1
commit 1ea0526ef8
10 changed files with 384 additions and 292 deletions

View File

@@ -1,10 +1,14 @@
using Microsoft.AspNetCore.Builder;
using Autofac;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using PluralKit.Core;
namespace PluralKit.API
{
public class Startup
@@ -23,20 +27,16 @@ namespace PluralKit.API
services.AddControllers()
.SetCompatibilityVersion(CompatibilityVersion.Latest)
.AddNewtonsoftJson(); // sorry MS, this just does *more*
}
services
.AddTransient<IDataStore, PostgresDataStore>()
.AddSingleton<SchemaService>()
.AddSingleton(svc => InitUtils.InitMetrics(svc.GetRequiredService<CoreConfig>(), "API"))
.AddScoped<TokenAuthService>()
.AddTransient(_ => Configuration.GetSection("PluralKit").Get<CoreConfig>() ?? new CoreConfig())
.AddSingleton(svc => InitUtils.InitLogger(svc.GetRequiredService<CoreConfig>(), "api"))
.AddTransient<DbConnectionCountHolder>()
.AddTransient<DbConnectionFactory>();
public void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterInstance(Configuration);
builder.RegisterModule(new ConfigModule<object>());
builder.RegisterModule(new LoggingModule("api"));
builder.RegisterModule(new MetricsModule("API"));
builder.RegisterModule<DataStoreModule>();
builder.RegisterModule<APIModule>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.