using System.Threading.Tasks; using Kruzya.TelegramBot.Core.Data; using Kruzya.TelegramBot.Core.Extensions; namespace Kruzya.TelegramBot.Core.Options; public class DbOptionProvider : IOptionProvider { private readonly CoreContext _db; public DbOptionProvider(CoreContext db) { _db = db; } public async Task GetValueAsync(long chatId, string optionId, TValue defVal) { return (await _db.ChatOptionValues.FindOrCreateOption(chatId, optionId)).GetValue(defVal); } public async Task SetValueAsync(long chatId, string optionId, TValue value) { var chatOption = await _db.ChatOptionValues.FindOrCreateOption(chatId, optionId); chatOption.SetValue(value); _db.AddOrUpdate(chatOption); } }