[FA-misc] Wire up ReportingService Program.cs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-01-30 16:43:26 -05:00
parent 2c14ab4936
commit 1fda5ad440

View File

@@ -1,3 +1,10 @@
using FictionArchive.Common.Extensions;
using FictionArchive.Service.ReportingService.Consumers;
using FictionArchive.Service.ReportingService.Services;
using FictionArchive.Service.ReportingService.GraphQL;
using FictionArchive.Service.Shared;
using FictionArchive.Service.Shared.Extensions;
namespace FictionArchive.Service.ReportingService; namespace FictionArchive.Service.ReportingService;
public class Program public class Program
@@ -5,8 +12,68 @@ public class Program
public static void Main(string[] args) public static void Main(string[] args)
{ {
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
var isSchemaExport = SchemaExportDetector.IsSchemaExportMode(args);
builder.AddLocalAppsettings();
builder.Services.AddHealthChecks();
#region MassTransit
if (!isSchemaExport)
{
builder.Services.AddFictionArchiveMassTransit(
builder.Configuration,
x =>
{
x.AddConsumer<JobStatusUpdateConsumer>();
});
}
#endregion
#region GraphQL
builder.Services.AddGraphQLServer()
.AddQueryConventions()
.AddTypeExtension(typeof(JobQueries))
.ApplySaneDefaults()
.AddAuthorization();
#endregion
#region Database
builder.Services.RegisterDbContext<ReportingDbContext>(
builder.Configuration.GetConnectionString("DefaultConnection"),
skipInfrastructure: isSchemaExport);
#endregion
// Authentication & Authorization
builder.Services.AddOidcAuthentication(builder.Configuration);
builder.Services.AddFictionArchiveAuthorization();
var app = builder.Build(); var app = builder.Build();
app.MapGet("/healthz", () => "ok");
app.Run(); // Update database (skip in schema export mode)
if (!isSchemaExport)
{
using var scope = app.Services.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<ReportingDbContext>();
dbContext.UpdateDatabase();
}
app.UseHttpsRedirection();
app.MapHealthChecks("/healthz");
app.UseAuthentication();
app.UseAuthorization();
app.MapGraphQL();
app.RunWithGraphQLCommands(args);
} }
} }