using EFCore.BulkExtensions; using Quartz; using DysonNetwork.Sphere; using DysonNetwork.Common.Models; using Microsoft.Extensions.DependencyInjection; namespace DysonNetwork.Drive.Handlers; public class ActionLogFlushHandler(IServiceProvider serviceProvider) : IFlushHandler { public async Task FlushAsync(IReadOnlyList items) { using var scope = serviceProvider.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); await db.BulkInsertAsync(items, config => config.ConflictOption = ConflictOption.Ignore); } } public class ActionLogFlushJob(FlushBufferService fbs, ActionLogFlushHandler hdl) : IJob { public async Task Execute(IJobExecutionContext context) { await fbs.FlushAsync(hdl); } }