Files
Teamup/src/Modules/TeamUp.Modules.Governance/GovernanceModule.cs
T

33 lines
1.4 KiB
C#
Raw Normal View History

2026-06-09 06:41:28 +03:30
using Microsoft.AspNetCore.Routing;
using Microsoft.EntityFrameworkCore;
2026-06-09 06:41:28 +03:30
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using TeamUp.Modules.Governance.Auditing;
using TeamUp.Modules.Governance.Endpoints;
using TeamUp.Modules.Governance.Persistence;
using TeamUp.SharedKernel.Auditing;
2026-06-09 06:41:28 +03:30
using TeamUp.SharedKernel.Modularity;
using TeamUp.SharedKernel.Persistence;
2026-06-09 06:41:28 +03:30
namespace TeamUp.Modules.Governance;
/// <summary>Autonomy dial, the action gate, the review inbox, the audit log (M5). M1 ships the audit log.</summary>
2026-06-09 06:41:28 +03:30
public sealed class GovernanceModule : IModule
{
public string Name => "governance";
public void Register(IServiceCollection services, IConfiguration configuration)
{
var connectionString = configuration.GetConnectionString("Postgres")
?? throw new InvalidOperationException("Missing connection string 'ConnectionStrings:Postgres'.");
2026-06-09 06:41:28 +03:30
services.AddDbContext<GovernanceDbContext>(options => options.UseNpgsql(connectionString));
services.AddScoped<IModuleDbContext>(sp => sp.GetRequiredService<GovernanceDbContext>());
services.AddScoped<IAuditLog, AuditLog>();
services.TryAddSingleton(TimeProvider.System);
2026-06-09 06:41:28 +03:30
}
public void MapEndpoints(IEndpointRouteBuilder endpoints) => GovernanceEndpoints.Map(endpoints);
2026-06-09 06:41:28 +03:30
}