Skip to content

Commit 59314fa

Browse files
Added logic for modules to be initialized on startup
1 parent 09fd6ed commit 59314fa

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using Microsoft.AspNetCore.Builder;
2+
3+
namespace DotNetElements.AppFramework.AspNet;
4+
5+
// todo better error handling
6+
public interface IStartupModule
7+
{
8+
Task InitAsync(WebApplication app);
9+
}

src/DotNetElements.AppFramework.AspNet/Modules/WebApplicationExtensions.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ public static WebApplication MapModuleEndpoints(this WebApplication app)
1515
return app;
1616
}
1717

18+
// todo better error handling
19+
public static async Task InitModulesAsync(this WebApplication app)
20+
{
21+
ArgumentNullException.ThrowIfNull(WebApplicationBuilderExtensions.RegisteredModules);
22+
23+
foreach (IStartupModule module in WebApplicationBuilderExtensions.RegisteredModules.OfType<IStartupModule>())
24+
await module.InitAsync(app);
25+
}
26+
1827
public static WebApplication MigrateDatabase<TDbContext>(this WebApplication app)
1928
where TDbContext : DbContext
2029
{

src/DotNetElements.AppFramework.AspNet/WebApplicationExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ namespace DotNetElements.AppFramework.AspNet;
66

77
public static class WebApplicationExtensions
88
{
9-
public static WebApplication UseAppFramework(this WebApplication app)
9+
public static async Task UseAppFrameworkAsync(this WebApplication app)
1010
{
1111
app.UseSerilogRequestLogging();
1212

1313
app.MapModuleEndpoints();
1414

15-
return app;
15+
await app.InitModulesAsync();
1616
}
1717
}

0 commit comments

Comments
 (0)