From e8e3c4cba8ffa0056e984c113cfbb75319e00022 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Fri, 20 Sep 2024 16:21:09 +1000 Subject: v0.4-rc1 --- Program.cs | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'Program.cs') diff --git a/Program.cs b/Program.cs index ba53ccb..cc60d92 100644 --- a/Program.cs +++ b/Program.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Text.Json.Serialization; namespace PagerParser; @@ -8,6 +8,7 @@ public class Program { var builder = WebApplication.CreateBuilder(args); builder.Services.AddDbContext(); + builder.Services.AddRazorPages(); // This is necessary if we don't want enum values sent as integers in JSON objects builder.Services.AddControllers().AddJsonOptions(o => { @@ -19,12 +20,16 @@ public class Program { // Add our custom services builder.Services.AddSingleton(); + builder.Services.AddSingleton(); + builder.Services.AddSingleton(p => p.GetRequiredService()); + builder.Services.AddSingleton(p => p.GetRequiredService()); builder.Services.AddHostedService(); var app = builder.Build(); // Create a temporary scope so that we can access services during startup using var scope = app.Services.CreateScope(); + var logger = scope.ServiceProvider.GetRequiredService>(); var config = scope.ServiceProvider.GetRequiredService(); var parser = scope.ServiceProvider.GetRequiredService(); @@ -35,26 +40,40 @@ public class Program { var needsMigration = db.Database.GetPendingMigrations().Any(); db.Database.Migrate(); - if(config.GetValue("PagerParser:ReparseAllOnStartup")) { + int c = 0; + if(needsMigration || config.GetValue("PagerParser:ReparseAllOnStartup")) { + logger.LogInformation("Reparsing all messages..."); db.ParsedPagerMessages.RemoveRange( db.ParsedPagerMessages.ToArray()); db.SaveChanges(); foreach(var message in db.PagerMessages) { message.ParsedMessage = parser.TryParse(message.Message); - if(message.ParsedMessage is not null) + if(message.ParsedMessage is not null) { + c++; message.ParsedMessage.GpsPosition = PositionCalculator.GetGpsPosition(message.ParsedMessage); + } } db.SaveChanges(); + logger.LogInformation($"Successfully reparsed {c}/{db.PagerMessages.Count()} messages"); } else if(config.GetValue("PagerParser:ReparseFailedOnStartup")) { + logger.LogInformation("Reparsing non-parsed messages..."); foreach(var message in db.PagerMessages.Where(m => m.ParsedMessage == null)) { message.ParsedMessage = parser.TryParse(message.Message); - if(message.ParsedMessage is not null) + if(message.ParsedMessage is not null) { + c++; if(message.ParsedMessage.GpsPosition is null) message.ParsedMessage.GpsPosition = PositionCalculator.GetGpsPosition(message.ParsedMessage); + } } db.SaveChanges(); + logger.LogInformation($"Successfully reparsed {c}/{db.PagerMessages.Count()} messages"); + } + + if(!app.Environment.IsDevelopment()) { + app.UseExceptionHandler("/Error"); + app.UseHsts(); } // Start the server @@ -64,8 +83,11 @@ public class Program { .AllowAnyHeader()); app.UseHttpsRedirection(); app.UseHsts(); - app.UseStaticFiles(); app.MapControllers(); + app.UseStaticFiles(); + app.UseRouting(); + app.UseAuthorization(); + app.MapRazorPages(); app.Run(); } } -- cgit v1.3