using IdentityShroud.Core.Model; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; namespace IdentityShroud.Core; public class DbConfiguration { public string ConnectionString { get; set; } = ""; public bool LogSensitiveData { get; set; } = false; } public class Db( IOptions configuration, ILoggerFactory? loggerFactory) : DbContext { public virtual DbSet Clients { get; set; } public virtual DbSet Realms { get; set; } public virtual DbSet Keys { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseNpgsql(""); optionsBuilder.UseNpgsql( configuration.Value.ConnectionString, o => o.MigrationsAssembly("IdentityShroud.Migrations")); // , o => o.UseNodaTime().UseVector().MigrationsAssembly("Migrations.KnowledgeBaseDB")); optionsBuilder.UseSnakeCaseNamingConvention(); if (configuration.Value.LogSensitiveData) optionsBuilder.EnableSensitiveDataLogging(); if (loggerFactory is { } ) { optionsBuilder.UseLoggerFactory(loggerFactory); } } }