feat: add application preloader, identity roles, and resilient database initialization with automated seeding

This commit is contained in:
2026-05-01 09:07:26 +02:00
parent 0210611edf
commit 47bffd629f
11 changed files with 262 additions and 21 deletions
+44
View File
@@ -0,0 +1,44 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using NexusReader.Infrastructure.Persistence;
using Microsoft.Extensions.Configuration;
using NexusReader.Domain.Entities;
using System;
using System.Linq;
using System.Threading.Tasks;
var configuration = new ConfigurationBuilder()
.AddJsonFile("src/NexusReader.Web.New/appsettings.json")
.Build();
var services = new ServiceCollection();
var pgConnectionString = configuration.GetConnectionString("PostgresConnection");
if (!string.IsNullOrEmpty(pgConnectionString))
{
services.AddDbContext<AppDbContext>(options => options.UseNpgsql(pgConnectionString));
}
else
{
services.AddDbContext<AppDbContext>(options => options.UseSqlite(configuration.GetConnectionString("SqliteConnection")));
}
var serviceProvider = services.BuildServiceProvider();
using var scope = serviceProvider.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<AppDbContext>();
try
{
var user = await dbContext.Users.FirstOrDefaultAsync(u => u.Email == "admin@nexus.com");
if (user == null)
{
Console.WriteLine("User admin@nexus.com NOT FOUND in database.");
}
else
{
Console.WriteLine($"User found: {user.Email}, Id: {user.Id}, EmailConfirmed: {user.EmailConfirmed}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error accessing database: {ex.Message}");
}