mirror of
https://github.com/chylex/Minecraft-Phantom-Panel.git
synced 2024-11-24 22:42:53 +01:00
33 lines
1.1 KiB
C#
33 lines
1.1 KiB
C#
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Infrastructure;
|
|
|
|
namespace Phantom.Controller.Database.Postgres;
|
|
|
|
public sealed class ApplicationDbContextFactory : IDbContextProvider {
|
|
private readonly PooledDbContextFactory<ApplicationDbContext> factory;
|
|
|
|
public ApplicationDbContextFactory(string connectionString) {
|
|
this.factory = new PooledDbContextFactory<ApplicationDbContext>(CreateOptions(connectionString), poolSize: 32);
|
|
}
|
|
|
|
public ApplicationDbContext Eager() {
|
|
return factory.CreateDbContext();
|
|
}
|
|
|
|
public ILazyDbContext Lazy() {
|
|
return new LazyDbContext(this);
|
|
}
|
|
|
|
private static DbContextOptions<ApplicationDbContext> CreateOptions(string connectionString) {
|
|
var builder = new DbContextOptionsBuilder<ApplicationDbContext>();
|
|
builder.UseNpgsql(connectionString, ConfigureOptions);
|
|
return builder.Options;
|
|
}
|
|
|
|
private static void ConfigureOptions(NpgsqlDbContextOptionsBuilder options) {
|
|
options.CommandTimeout(10);
|
|
options.MigrationsAssembly(typeof(ApplicationDbContextDesignFactory).Assembly.FullName);
|
|
}
|
|
}
|