Merge pull request #114: fix(web): restore public game pages
Deploy Telegram Bot / build-and-push (push) Successful in 6m0s
Deploy Telegram Bot / scan-images (push) Successful in 3m30s
Deploy Telegram Bot / deploy (push) Successful in 30s

This commit is contained in:
2026-05-29 09:40:20 +03:00
7 changed files with 24 additions and 12 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ on:
- main
env:
VERSION: 3.5.0
VERSION: 3.5.1
jobs:
# ЧАСТЬ 1: Собираем образы и кладем в Gitea (чтобы делиться с ребятами)
+1 -1
View File
@@ -1,6 +1,6 @@
<Project>
<PropertyGroup>
<Version>3.5.0</Version>
<Version>3.5.1</Version>
<TargetFramework>net10.0</TargetFramework>
<LangVersion>preview</LangVersion>
<Nullable>enable</Nullable>
+1 -1
View File
@@ -4,7 +4,7 @@
Проект разработан с упором на производительность, архитектуру Vertical Slice, Native AOT (для бота) и удобство развертывания с использованием .NET Aspire.
**Текущая версия:** `v3.5.0`.
**Текущая версия:** `v3.5.1`.
---
+3 -3
View File
@@ -49,7 +49,7 @@ services:
crond -f
bot:
image: git.codeanddice.ru/toutsu/gmrelay-bot:3.5.0
image: git.codeanddice.ru/toutsu/gmrelay-bot:3.5.1
restart: always
depends_on:
db:
@@ -67,7 +67,7 @@ services:
retries: 3
discord:
image: git.codeanddice.ru/toutsu/gmrelay-discord-bot:3.5.0
image: git.codeanddice.ru/toutsu/gmrelay-discord-bot:3.5.1
restart: always
depends_on:
db:
@@ -84,7 +84,7 @@ services:
retries: 3
web:
image: git.codeanddice.ru/toutsu/gmrelay-web:3.5.0
image: git.codeanddice.ru/toutsu/gmrelay-web:3.5.1
restart: always
depends_on:
db:
@@ -73,7 +73,7 @@
</button>
</form>
<div class="nav-version">v3.5.0</div>
<div class="nav-version">v3.5.1</div>
</div>
</Authorized>
<NotAuthorized>
+5 -5
View File
@@ -327,7 +327,7 @@ public sealed class SessionService(
FROM group_managers gm
WHERE gm.group_id = g.id
AND gm.role = @OwnerRole
ORDER BY gm.added_at
ORDER BY gm.created_at
LIMIT 1
) owner_manager ON true
LEFT JOIN player_links owner_link ON owner_link.secondary_player_id = owner_manager.player_id
@@ -394,7 +394,7 @@ public sealed class SessionService(
FROM group_managers gm
WHERE gm.group_id = g.id
AND gm.role = @OwnerRole
ORDER BY gm.added_at
ORDER BY gm.created_at
LIMIT 1
) owner_manager ON true
LEFT JOIN player_links owner_link ON owner_link.secondary_player_id = owner_manager.player_id
@@ -470,7 +470,7 @@ public sealed class SessionService(
FROM group_managers gm
WHERE gm.group_id = g.id
AND gm.role = @OwnerRole
ORDER BY gm.added_at
ORDER BY gm.created_at
LIMIT 1
) owner_manager ON true
LEFT JOIN player_links owner_link ON owner_link.secondary_player_id = owner_manager.player_id
@@ -573,7 +573,7 @@ public sealed class SessionService(
FROM group_managers gm
WHERE gm.group_id = g.id
AND gm.role = @OwnerRole
ORDER BY gm.added_at
ORDER BY gm.created_at
LIMIT 1
) owner_manager ON true
LEFT JOIN player_links owner_link ON owner_link.secondary_player_id = owner_manager.player_id
@@ -2111,7 +2111,7 @@ public sealed class SessionService(
FROM group_managers gm
WHERE gm.group_id = g.id
AND gm.role = @OwnerRole
ORDER BY gm.added_at
ORDER BY gm.created_at
LIMIT 1
) owner_manager ON true
LEFT JOIN player_links owner_link ON owner_link.secondary_player_id = owner_manager.player_id
@@ -108,6 +108,18 @@ public sealed class MasterProfilesTests
Assert.DoesNotContain("gm.role = @OwnerRole", sessionsQuery, StringComparison.Ordinal);
}
[Fact]
public async Task PublicOwnerProfileLinks_ShouldOrderByExistingGroupManagerTimestamp()
{
var migration = await ReadRepositoryFileAsync("src/GmRelay.Bot/Migrations/V008__add_group_managers.sql");
var sessionService = await ReadRepositoryFileAsync("src/GmRelay.Web/Services/SessionService.cs");
Assert.Contains("created_at", migration, StringComparison.Ordinal);
Assert.DoesNotContain("added_at", migration, StringComparison.Ordinal);
Assert.DoesNotContain("gm.added_at", PublicQuerySection(sessionService), StringComparison.Ordinal);
Assert.Contains("gm.created_at", PublicQuerySection(sessionService), StringComparison.Ordinal);
}
private static string RecordSection(string source, string recordName)
{
var start = source.IndexOf($"record {recordName}", StringComparison.Ordinal);