namespace Server.DB; using Documents; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; public class WonderkingContext : DbContext { private readonly IConfiguration _configuration; private readonly ILoggerFactory _loggerFactory; public WonderkingContext(ILoggerFactory loggerFactory, IConfiguration configuration) { this._loggerFactory = loggerFactory; this._configuration = configuration; } public DbSet Accounts { get; set; } public DbSet Characters { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder .UseNpgsql( $"Host={this._configuration["DB:Host"]};Username={this._configuration["DB:Username"]};Password={this._configuration["DB:Password"]};Database={this._configuration["DB:Database"]};Port={this._configuration["DB:Port"]}") .EnableSensitiveDataLogging().UseLoggerFactory(this._loggerFactory); protected override void OnModelCreating(ModelBuilder modelBuilder) => modelBuilder.Entity(builder => { builder.Property(b => b.Username).HasColumnType("varchar(20)"); builder.Property(b => b.Password).HasColumnType("bytea"); builder.Property(b => b.Salt).HasColumnType("bytea"); builder.HasKey(b => b.Id); builder.HasMany(e => e.Characters).WithOne(e => e.Account).HasForeignKey(e => e.AccountId).IsRequired(); }).Entity(builder => { builder.HasKey(c => c.Id); builder.Property(c => c.Name).HasColumnType("varchar(20)"); }); }