From 1e8e2e9ea73f37139377b0e9323b204916bd5dbf Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Wed, 20 Aug 2025 01:41:27 +0800 Subject: [PATCH] :bug: Fixes DI and lifetimes --- DysonNetwork.Drive/Startup/BroadcastEventHandler.cs | 9 ++++++--- DysonNetwork.Pass/Program.cs | 2 ++ DysonNetwork.Sphere/Startup/BroadcastEventHandler.cs | 6 ++++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/DysonNetwork.Drive/Startup/BroadcastEventHandler.cs b/DysonNetwork.Drive/Startup/BroadcastEventHandler.cs index 77691cc..79bab7f 100644 --- a/DysonNetwork.Drive/Startup/BroadcastEventHandler.cs +++ b/DysonNetwork.Drive/Startup/BroadcastEventHandler.cs @@ -9,8 +9,7 @@ namespace DysonNetwork.Drive.Startup; public class BroadcastEventHandler( INatsConnection nats, ILogger logger, - FileService fs, - AppDatabase db + IServiceProvider serviceProvider ) : BackgroundService { protected override async Task ExecuteAsync(CancellationToken stoppingToken) @@ -23,7 +22,11 @@ public class BroadcastEventHandler( if (evt == null) continue; logger.LogInformation("Account deleted: {AccountId}", evt.AccountId); - + + using var scope = serviceProvider.CreateScope(); + var fs = scope.ServiceProvider.GetRequiredService(); + var db = scope.ServiceProvider.GetRequiredService(); + await using var transaction = await db.Database.BeginTransactionAsync(cancellationToken: stoppingToken); try { diff --git a/DysonNetwork.Pass/Program.cs b/DysonNetwork.Pass/Program.cs index 1b10786..e1a24c4 100644 --- a/DysonNetwork.Pass/Program.cs +++ b/DysonNetwork.Pass/Program.cs @@ -4,6 +4,7 @@ using DysonNetwork.Pass.Startup; using DysonNetwork.Shared.Http; using DysonNetwork.Shared.PageData; using DysonNetwork.Shared.Registry; +using DysonNetwork.Shared.Stream; using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(args); @@ -16,6 +17,7 @@ builder.Services.AddAppMetrics(); // Add application services builder.Services.AddRegistryService(builder.Configuration); +builder.Services.AddStreamConnection(builder.Configuration); builder.Services.AddAppServices(builder.Configuration); builder.Services.AddAppRateLimiting(); builder.Services.AddAppAuthentication(); diff --git a/DysonNetwork.Sphere/Startup/BroadcastEventHandler.cs b/DysonNetwork.Sphere/Startup/BroadcastEventHandler.cs index 2512f76..0ba26dc 100644 --- a/DysonNetwork.Sphere/Startup/BroadcastEventHandler.cs +++ b/DysonNetwork.Sphere/Startup/BroadcastEventHandler.cs @@ -8,7 +8,7 @@ namespace DysonNetwork.Sphere.Startup; public class BroadcastEventHandler( INatsConnection nats, ILogger logger, - AppDatabase db + IServiceProvider serviceProvider ) : BackgroundService { protected override async Task ExecuteAsync(CancellationToken stoppingToken) @@ -22,7 +22,9 @@ public class BroadcastEventHandler( logger.LogInformation("Account deleted: {AccountId}", evt.AccountId); - // TODO: Add empty realm, chat recycler in the db recycle + using var scope = serviceProvider.CreateScope(); + var db = scope.ServiceProvider.GetRequiredService(); + await db.ChatMembers .Where(m => m.AccountId == evt.AccountId) .ExecuteDeleteAsync(cancellationToken: stoppingToken);