namespace Iceshrimp.Backend.Core.Services; public class FollowupTaskService(IServiceScopeFactory serviceScopeFactory) { public bool IsBackgroundWorker { get; private set; } public Task ExecuteTask(string taskName, Func work) { return Task.Run(async () => { await using var scope = serviceScopeFactory.CreateAsyncScope(); try { var provider = scope.ServiceProvider; var instance = provider.GetRequiredService(); instance.IsBackgroundWorker = true; await work(provider); } catch (Exception e) { var logger = scope.ServiceProvider.GetRequiredService>(); logger.LogError("Failed to execute background task {name}: {error}", taskName, e.ToString()); } }); } }