Scratch for running next callbacks in queue

This commit is contained in:
2020-03-09 19:31:16 +04:00
parent 73cfe51312
commit 8681c7cf69
3 changed files with 34 additions and 0 deletions
+13
View File
@@ -1,3 +1,4 @@
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
namespace Kruzya.TelegramBot.Core.Data namespace Kruzya.TelegramBot.Core.Data
@@ -11,6 +12,18 @@ namespace Kruzya.TelegramBot.Core.Data
public DbSet<BotUserValue> UserValues { get; set; } public DbSet<BotUserValue> UserValues { get; set; }
public override void Dispose()
{
SaveChanges();
base.Dispose();
}
public override ValueTask DisposeAsync()
{
SaveChanges();
return base.DisposeAsync();
}
public CoreContext(DbContextOptions<CoreContext> ctx) : base(ctx) public CoreContext(DbContextOptions<CoreContext> ctx) : base(ctx)
{ {
Database.Migrate(); Database.Migrate();
+19
View File
@@ -1,6 +1,7 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Kruzya.TelegramBot.Core.Data; using Kruzya.TelegramBot.Core.Data;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
namespace Kruzya.TelegramBot.Core.Extensions namespace Kruzya.TelegramBot.Core.Extensions
{ {
@@ -48,6 +49,23 @@ namespace Kruzya.TelegramBot.Core.Extensions
#region Core-context repository extensions #region Core-context repository extensions
#region BotUser
public static async Task<BotUser> FindOrCreate(this DbSet<BotUser> repository, long chatId, int userId)
{
var user = await repository.SingleOrDefaultAsync(e => e.ChatId == chatId && e.UserId == userId);
if (user == null)
{
user = repository.Create();
user.ChatId = chatId;
user.UserId = userId;
}
return user;
}
#endregion
#region BotUserValue #region BotUserValue
#region FindOption #region FindOption
@@ -79,6 +97,7 @@ namespace Kruzya.TelegramBot.Core.Extensions
if (opt == null) if (opt == null)
{ {
opt = repository.Create(); opt = repository.Create();
opt.BotUser = await repository.GetService<CoreContext>().Users.FindOrCreate(chatId, userId);
} }
return opt; return opt;
+2
View File
@@ -39,6 +39,8 @@ namespace Kruzya.TelegramBot.Core
await VerifyChatPair(message); await VerifyChatPair(message);
} }
throw new ArgumentException();
} }
public async Task VerifyChatPair(Message message) public async Task VerifyChatPair(Message message)