#nullable enable using Microsoft.EntityFrameworkCore; using System.Text.Json.Serialization; using System.Text.Json; using System; namespace Kruzya.TelegramBot.Core.Data; [PrimaryKey(nameof(ChatId), nameof(OptionId))] public class ChatOptionValue { public long ChatId { get; set; } public string OptionId { get; set; } public byte[] Value { get; set; } public T GetValue(T? defVal = default) { try { return JsonSerializer.Deserialize(new ReadOnlySpan(Value)); } catch (Exception) { return defVal; } } public void SetValue(T value) { Value = JsonSerializer.SerializeToUtf8Bytes(value, new JsonSerializerOptions { WriteIndented = false, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull }); } }