Merge pull request #114: fix(web): restore public game pages
This commit is contained in:
@@ -6,7 +6,7 @@ on:
|
|||||||
- main
|
- main
|
||||||
|
|
||||||
env:
|
env:
|
||||||
VERSION: 3.5.0
|
VERSION: 3.5.1
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# ЧАСТЬ 1: Собираем образы и кладем в Gitea (чтобы делиться с ребятами)
|
# ЧАСТЬ 1: Собираем образы и кладем в Gitea (чтобы делиться с ребятами)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Version>3.5.0</Version>
|
<Version>3.5.1</Version>
|
||||||
<TargetFramework>net10.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
<LangVersion>preview</LangVersion>
|
<LangVersion>preview</LangVersion>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
Проект разработан с упором на производительность, архитектуру Vertical Slice, Native AOT (для бота) и удобство развертывания с использованием .NET Aspire.
|
Проект разработан с упором на производительность, архитектуру Vertical Slice, Native AOT (для бота) и удобство развертывания с использованием .NET Aspire.
|
||||||
|
|
||||||
**Текущая версия:** `v3.5.0`.
|
**Текущая версия:** `v3.5.1`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -49,7 +49,7 @@ services:
|
|||||||
crond -f
|
crond -f
|
||||||
|
|
||||||
bot:
|
bot:
|
||||||
image: git.codeanddice.ru/toutsu/gmrelay-bot:3.5.0
|
image: git.codeanddice.ru/toutsu/gmrelay-bot:3.5.1
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
@@ -67,7 +67,7 @@ services:
|
|||||||
retries: 3
|
retries: 3
|
||||||
|
|
||||||
discord:
|
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
|
restart: always
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
@@ -84,7 +84,7 @@ services:
|
|||||||
retries: 3
|
retries: 3
|
||||||
|
|
||||||
web:
|
web:
|
||||||
image: git.codeanddice.ru/toutsu/gmrelay-web:3.5.0
|
image: git.codeanddice.ru/toutsu/gmrelay-web:3.5.1
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
|
|||||||
@@ -73,7 +73,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class="nav-version">v3.5.0</div>
|
<div class="nav-version">v3.5.1</div>
|
||||||
</div>
|
</div>
|
||||||
</Authorized>
|
</Authorized>
|
||||||
<NotAuthorized>
|
<NotAuthorized>
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ public sealed class SessionService(
|
|||||||
FROM group_managers gm
|
FROM group_managers gm
|
||||||
WHERE gm.group_id = g.id
|
WHERE gm.group_id = g.id
|
||||||
AND gm.role = @OwnerRole
|
AND gm.role = @OwnerRole
|
||||||
ORDER BY gm.added_at
|
ORDER BY gm.created_at
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
) owner_manager ON true
|
) owner_manager ON true
|
||||||
LEFT JOIN player_links owner_link ON owner_link.secondary_player_id = owner_manager.player_id
|
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
|
FROM group_managers gm
|
||||||
WHERE gm.group_id = g.id
|
WHERE gm.group_id = g.id
|
||||||
AND gm.role = @OwnerRole
|
AND gm.role = @OwnerRole
|
||||||
ORDER BY gm.added_at
|
ORDER BY gm.created_at
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
) owner_manager ON true
|
) owner_manager ON true
|
||||||
LEFT JOIN player_links owner_link ON owner_link.secondary_player_id = owner_manager.player_id
|
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
|
FROM group_managers gm
|
||||||
WHERE gm.group_id = g.id
|
WHERE gm.group_id = g.id
|
||||||
AND gm.role = @OwnerRole
|
AND gm.role = @OwnerRole
|
||||||
ORDER BY gm.added_at
|
ORDER BY gm.created_at
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
) owner_manager ON true
|
) owner_manager ON true
|
||||||
LEFT JOIN player_links owner_link ON owner_link.secondary_player_id = owner_manager.player_id
|
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
|
FROM group_managers gm
|
||||||
WHERE gm.group_id = g.id
|
WHERE gm.group_id = g.id
|
||||||
AND gm.role = @OwnerRole
|
AND gm.role = @OwnerRole
|
||||||
ORDER BY gm.added_at
|
ORDER BY gm.created_at
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
) owner_manager ON true
|
) owner_manager ON true
|
||||||
LEFT JOIN player_links owner_link ON owner_link.secondary_player_id = owner_manager.player_id
|
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
|
FROM group_managers gm
|
||||||
WHERE gm.group_id = g.id
|
WHERE gm.group_id = g.id
|
||||||
AND gm.role = @OwnerRole
|
AND gm.role = @OwnerRole
|
||||||
ORDER BY gm.added_at
|
ORDER BY gm.created_at
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
) owner_manager ON true
|
) owner_manager ON true
|
||||||
LEFT JOIN player_links owner_link ON owner_link.secondary_player_id = owner_manager.player_id
|
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);
|
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)
|
private static string RecordSection(string source, string recordName)
|
||||||
{
|
{
|
||||||
var start = source.IndexOf($"record {recordName}", StringComparison.Ordinal);
|
var start = source.IndexOf($"record {recordName}", StringComparison.Ordinal);
|
||||||
|
|||||||
Reference in New Issue
Block a user