using AutoDispathingWork.Utils; using LiteDB; using Microsoft.Extensions.Options; using WorkerService1.Dto.Configuration; namespace WorkerService1.Services; public class SettingServices { private readonly IOptionsMonitor _optionsMonitor; public SettingServices(IOptionsMonitor optionsMonitor) { _optionsMonitor = optionsMonitor; } public void Reset() { SettingClientOptions(_optionsMonitor.CurrentValue); } public ClientOptions GetClientOptions() { using var scope = StaticServiceProvider.Current.CreateScope(); var _db = scope.ServiceProvider.GetService(); var clientOptions = _db.ClientOptions; var dbOptions = clientOptions.FirstOrDefault(); if (dbOptions != null) { return dbOptions; } return _optionsMonitor.CurrentValue; } public ClientOptions SettingClientOptions(ClientOptions options) { using var scope = StaticServiceProvider.Current.CreateScope(); var _db = scope.ServiceProvider.GetService(); var clientOptions = _db.ClientOptions; var dbOptions = clientOptions.FirstOrDefault(); if (dbOptions != null) { clientOptions.Remove(dbOptions); _db.SaveChanges(); } clientOptions.Add(options); _db.SaveChanges(); return options; } }