using Microsoft.AspNetCore.Routing; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using TeamUp.Modules.OrgBoard.Endpoints; using TeamUp.Modules.OrgBoard.Persistence; using TeamUp.Modules.OrgBoard.Runtime; using TeamUp.SharedKernel.Ai; using TeamUp.SharedKernel.Modularity; using TeamUp.SharedKernel.Persistence; namespace TeamUp.Modules.OrgBoard; /// Org, products, teams, seats, and the task/board model (M1). public sealed class OrgBoardModule : IModule { public string Name => "orgboard"; public void Register(IServiceCollection services, IConfiguration configuration) { var connectionString = configuration.GetConnectionString("Postgres") ?? throw new InvalidOperationException("Missing connection string 'ConnectionStrings:Postgres'."); services.AddDbContext(options => options.UseNpgsql(connectionString)); services.AddScoped(sp => sp.GetRequiredService()); services.AddScoped(); services.TryAddSingleton(TimeProvider.System); } public void MapEndpoints(IEndpointRouteBuilder endpoints) => OrgBoardEndpoints.Map(endpoints); }