Added healthchecks

Configured scheduler schema
Added dataprotection support
This commit is contained in:
2026-08-21 11:19:06 +02:00
parent 77517579e3
commit ab2ef9da31
8 changed files with 275 additions and 14 deletions
@@ -0,0 +1,28 @@
using Microsoft.EntityFrameworkCore;
using PostFundManagement.Infrastructure.Database;
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Api.Extensions;
public static class Postgres
{
public static IServiceCollection AddDataProtectionDatabase(this IServiceCollection services, IConfiguration configuration)
{
var connectionString = configuration.GetConnectionString(DatabaseConfigName);
services.AddPooledDbContextFactory<DataProtectionDbContext>(options =>
options.UseNpgsql(connectionString));
return services;
}
public static IServiceCollection AddApplicationDbContext(this IServiceCollection services, IConfiguration configuration)
{
var connectionString = configuration.GetConnectionString(DatabaseConfigName)
?? throw new InvalidOperationException($"Connection string '{DatabaseConfigName}' was not found in configuration.");
services.AddPooledDbContextFactory<ApplicationDbContext>(builder => builder.UseNpgsql(connectionString));
return services;
}
}
@@ -6,7 +6,7 @@ using PostFundManagement.Infrastructure.Database;
namespace PostFundManagement.Api.Extensions;
public static class Api
public static class Security
{
public static IServiceCollection AddSecurityApiSdk(this IServiceCollection services, IConfiguration configuration)
{
@@ -42,6 +42,8 @@ public static class Api
public static IServiceCollection AddWebSecurity(this IServiceCollection services, IConfiguration configuration)
{
services.AddAuthorization();
var certString = configuration["DataProtection:Certificate"] ?? configuration["DataProtection__Certificate"];
var certPassword = configuration["DataProtection:Password"] ?? configuration["DataProtection__Password"];
+7 -6
View File
@@ -1,7 +1,8 @@
using Microsoft.Extensions.Diagnostics.HealthChecks;
using PostFundManagement.Api.Extensions;
using PostFundManagement.Domain.Extensions;
using PostFundManagement.Domain.Health;
using PostFundManagement.Domain.Mediator;
using PostFundManagement.Infrastructure.Extensions;
using static PostFundManagement.Domain.Extensions.Constants;
var builder = WebApplication.CreateBuilder(args);
@@ -21,7 +22,7 @@ builder.Services.AddWebSecurity(builder.Configuration);
builder.Services.AddScoped(typeof(IPipelineBehavior<,>), typeof(TelemetryPipelineBehavior<,>));
builder.Services.AddScoped(typeof(IPipelineBehavior<,>), typeof(LoggingPipelineBehavior<,>));
builder.Services.AddQuartzSchedulerClient(DefaultSchedulerName, builder.Configuration);
builder.Services.AddQuartzScheduler(DefaultSchedulerName, builder.Configuration);
builder.Services.AddEmailServices(builder.Configuration);
@@ -30,10 +31,10 @@ builder.Services.AddHashServices(builder.Configuration);
builder.Services.AddDataProtectionDatabase(builder.Configuration);
builder.Services.AddApplicationDbContext(builder.Configuration);
// TODO: add healthcheck services
// builder.Services.AddMidrandShopPostgresHealthCheck();
// builder.Services.AddMidrandShopQuartzHealthCheck();
// builder.Services.AddHealthChecksSupport(builder.Configuration);
builder.Services.AddHealthChecks()
.AddCheck<QuartzHealthCheck>("QuartzScheduler")
.AddCheck<PostgresHealthCheck>("PostgresDatabase")
.AddCheck("Self", () => HealthCheckResult.Healthy());
var app = builder.Build();