using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Text.Json; using System.Text.Json.Serialization; using System.Xml.Serialization; namespace Kruzya.TelegramBot.Core.Data { public class BotUserValue { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [Key] public Guid BotUserValueId { get; set; } public BotUser BotUser { get; set; } public string Name { get; set; } public string ValueType { 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 }); ValueType = value.GetType().FullName; } } }