feat: add application preloader, identity roles, and resilient database initialization with automated seeding
This commit is contained in:
@@ -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}");
|
||||
}
|
||||
Reference in New Issue
Block a user