initial chat options implementation

This commit is contained in:
Andriy
2023-07-20 20:24:16 +03:00
parent 46774bfd93
commit 8de8eac959
17 changed files with 420 additions and 5 deletions
+38
View File
@@ -0,0 +1,38 @@
#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>(T? defVal = default)
{
try
{
return JsonSerializer.Deserialize<T>(new ReadOnlySpan<byte>(Value));
}
catch (Exception)
{
return defVal;
}
}
public void SetValue<T>(T value)
{
Value = JsonSerializer.SerializeToUtf8Bytes(value, new JsonSerializerOptions
{
WriteIndented = false,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
});
}
}