-
+
diff --git a/src/GmRelay.Web/Dockerfile b/src/GmRelay.Web/Dockerfile
index 26410ea..7a6f163 100644
--- a/src/GmRelay.Web/Dockerfile
+++ b/src/GmRelay.Web/Dockerfile
@@ -18,6 +18,7 @@ RUN dotnet publish "GmRelay.Web.csproj" -c Release -o /app/publish /p:UseAppHost
# Stage 2: Runtime
FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble AS final
WORKDIR /app
+RUN apt-get update && apt-get install -y libgssapi-krb5-2 && rm -rf /var/lib/apt/lists/*
COPY --from=build /app/publish .
ENV ASPNETCORE_URLS=http://+:8080
EXPOSE 8080
diff --git a/src/GmRelay.Web/Services/SessionService.cs b/src/GmRelay.Web/Services/SessionService.cs
index ec0fba5..423501a 100644
--- a/src/GmRelay.Web/Services/SessionService.cs
+++ b/src/GmRelay.Web/Services/SessionService.cs
@@ -53,23 +53,23 @@ public sealed class SessionService(
await using var conn = await dataSource.OpenConnectionAsync();
await using var transaction = await conn.BeginTransactionAsync();
- // 1. Update Session
+ // 1. Fetch current session with all required columns for WebSession record
var oldSession = await conn.QuerySingleAsync(
- "SELECT title, scheduled_at AS ScheduledAt, join_link AS JoinLink, batch_id AS BatchId, batch_message_id AS BatchMessageId FROM sessions WHERE id = @Id",
+ @"SELECT s.id, s.group_id AS GroupId, s.title, s.scheduled_at AS ScheduledAt, s.status, s.join_link AS JoinLink,
+ s.batch_id AS BatchId, s.batch_message_id AS BatchMessageId,
+ g.telegram_chat_id AS TelegramChatId
+ FROM sessions s
+ JOIN game_groups g ON g.id = s.group_id
+ WHERE s.id = @Id",
new { Id = sessionId }, transaction);
+ // 2. Update Session
await conn.ExecuteAsync(
@"UPDATE sessions SET title = @Title, scheduled_at = @ScheduledAt, join_link = @JoinLink, updated_at = now()
WHERE id = @Id",
new { Id = sessionId, Title = title, ScheduledAt = scheduledAt, JoinLink = joinLink },
transaction);
- // 2. Fetch context for notification
- var group = await conn.QuerySingleAsync(
- @"SELECT telegram_chat_id AS TelegramChatId FROM game_groups g
- JOIN sessions s ON s.group_id = g.id WHERE s.id = @Id",
- new { Id = sessionId }, transaction);
-
// 3. Update all sessions in the same batch with new title (optional, usually batch shares title)
await conn.ExecuteAsync(
"UPDATE sessions SET title = @Title WHERE batch_id = @BatchId",
@@ -84,12 +84,12 @@ public sealed class SessionService(
$"📌 {System.Net.WebUtility.HtmlEncode(title)}\n" +
$"📅 Время: {scheduledAt.FormatMoscow()} (МСК)" + (timeChanged ? " (изменено)" : "");
- await bot.SendMessage(group.TelegramChatId, notification, parseMode: Telegram.Bot.Types.Enums.ParseMode.Html);
+ await bot.SendMessage(oldSession.TelegramChatId, notification, parseMode: Telegram.Bot.Types.Enums.ParseMode.Html);
// 5. Update Original Batch Message
if (oldSession.BatchMessageId.HasValue)
{
- await TryUpdateBatchMessageAsync(oldSession.BatchId, group.TelegramChatId, oldSession.BatchMessageId.Value, title);
+ await TryUpdateBatchMessageAsync(oldSession.BatchId, oldSession.TelegramChatId, oldSession.BatchMessageId.Value, title);
}
}