Split MAX bot loops and make chats cache-first

This commit is contained in:
sevenhill
2026-07-05 23:20:20 +03:00
parent 0106130744
commit 3bc6456ed7
7 changed files with 157 additions and 16 deletions
+8 -3
View File
@@ -21,8 +21,12 @@ public sealed class MaxOutboxService(
public async Task<int> ProcessOnceAsync(CancellationToken cancellationToken)
{
var processed = 0;
var processed = await ProcessPendingMessagesOnceAsync(cancellationToken);
return processed + await ProcessPendingChatActionsOnceAsync(cancellationToken);
}
public async Task<int> ProcessPendingMessagesOnceAsync(CancellationToken cancellationToken)
{
var candidates = await db.Messages
.Include(message => message.Chat)
.Include(message => message.Attachments)
@@ -41,6 +45,7 @@ public sealed class MaxOutboxService(
.Take(10)
.ToArray();
var processed = 0;
foreach (var message in pending)
{
cancellationToken.ThrowIfCancellationRequested();
@@ -50,10 +55,10 @@ public sealed class MaxOutboxService(
}
}
return processed + await ProcessPendingChatActionsAsync(cancellationToken);
return processed;
}
private async Task<int> ProcessPendingChatActionsAsync(CancellationToken cancellationToken)
public async Task<int> ProcessPendingChatActionsOnceAsync(CancellationToken cancellationToken)
{
var now = DateTimeOffset.UtcNow;
var pending = await db.Chats