mirror of
https://github.com/aliasvault/aliasvault.git
synced 2026-01-24 14:00:35 -05:00
63 lines
2.1 KiB
C#
63 lines
2.1 KiB
C#
//-----------------------------------------------------------------------
|
|
// <copyright file="PostgresqlDbContextFactory.cs" company="lanedirt">
|
|
// Copyright (c) lanedirt. All rights reserved.
|
|
// Licensed under the AGPLv3 license. See LICENSE.md file in the project root for full license information.
|
|
// </copyright>
|
|
//-----------------------------------------------------------------------
|
|
|
|
namespace AliasServerDb;
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
/// <summary>
|
|
/// The PostgreSQL DbContext factory.
|
|
/// </summary>
|
|
public class PostgresqlDbContextFactory : IAliasServerDbContextFactory
|
|
{
|
|
private readonly IConfiguration _configuration;
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="PostgresqlDbContextFactory"/> class.
|
|
/// </summary>
|
|
/// <param name="configuration">The configuration.</param>
|
|
public PostgresqlDbContextFactory(IConfiguration configuration)
|
|
{
|
|
_configuration = configuration;
|
|
}
|
|
|
|
/// <inheritdoc/>
|
|
public AliasServerDbContext CreateDbContext()
|
|
{
|
|
var optionsBuilder = new DbContextOptionsBuilder<AliasServerDbContext>();
|
|
ConfigureDbContextOptions(optionsBuilder);
|
|
|
|
return new AliasServerDbContext(optionsBuilder.Options);
|
|
}
|
|
|
|
/// <inheritdoc/>
|
|
public Task<AliasServerDbContext> CreateDbContextAsync(CancellationToken cancellationToken = default)
|
|
{
|
|
return Task.FromResult(CreateDbContext());
|
|
}
|
|
|
|
/// <inheritdoc/>
|
|
public void ConfigureDbContextOptions(DbContextOptionsBuilder optionsBuilder)
|
|
{
|
|
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
|
|
|
// Check environment variable first.
|
|
var connectionString = Environment.GetEnvironmentVariable("ConnectionStrings__AliasServerDbContext");
|
|
|
|
// If no environment variable, fall back to configuration.
|
|
if (string.IsNullOrEmpty(connectionString))
|
|
{
|
|
connectionString = _configuration.GetConnectionString("AliasServerDbContext");
|
|
}
|
|
|
|
optionsBuilder
|
|
.UseNpgsql(connectionString, options => options.CommandTimeout(60))
|
|
.UseLazyLoadingProxies();
|
|
}
|
|
}
|