Initial
This commit is contained in:
59
TimetableDesigner.API.Services.Authentication/Program.cs
Normal file
59
TimetableDesigner.API.Services.Authentication/Program.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using TimetableDesigner.API.Services.Authentication.API;
|
||||
using TimetableDesigner.API.Services.Authentication.Database;
|
||||
|
||||
namespace TimetableDesigner.API.Services.Authentication;
|
||||
|
||||
public static class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
WebApplication app = WebApplication.CreateBuilder(args)
|
||||
.SetupOpenApi()
|
||||
.SetupSecurity()
|
||||
.SetupDatabase()
|
||||
.Build();
|
||||
|
||||
if (app.Environment.IsDevelopment())
|
||||
app.MapOpenApi();
|
||||
app.InitializeDatabase();
|
||||
app.UseHttpsRedirection();
|
||||
app.MapEndpoints();
|
||||
|
||||
app.Run();
|
||||
}
|
||||
|
||||
private static WebApplicationBuilder SetupOpenApi(this WebApplicationBuilder builder)
|
||||
{
|
||||
builder.Services.AddOpenApi();
|
||||
return builder;
|
||||
}
|
||||
|
||||
private static WebApplicationBuilder SetupSecurity(this WebApplicationBuilder builder)
|
||||
{
|
||||
//builder.Services.AddAuthorization();
|
||||
return builder;
|
||||
}
|
||||
|
||||
private static WebApplicationBuilder SetupDatabase(this WebApplicationBuilder builder)
|
||||
{
|
||||
builder.Services.AddDbContext<DatabaseContext>(x => x.UseNpgsql(builder.Configuration.GetConnectionString("Database")), ServiceLifetime.Transient);
|
||||
return builder;
|
||||
}
|
||||
|
||||
private static WebApplication InitializeDatabase(this WebApplication app)
|
||||
{
|
||||
using (IServiceScope scope = app.Services.CreateScope())
|
||||
{
|
||||
DatabaseContext database = scope.ServiceProvider.GetRequiredService<DatabaseContext>();
|
||||
while (!database.Database.CanConnect())
|
||||
{
|
||||
app.Logger.LogInformation("Waiting for database...");
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
|
||||
database.Database.Migrate();
|
||||
}
|
||||
return app;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user