Refactor permissions and make tournament object fully cacheable (#3341)

This commit is contained in:
Kalle
2026-08-15 09:29:34 +03:00
committed by GitHub
parent 7a5c59b8cd
commit af7ef2fb08
86 changed files with 918 additions and 1066 deletions

View File

@@ -119,6 +119,9 @@ export function buildCases(fx: Fixtures): {
add("ArtRepository.findArtsByUserId", fx.heavyArtUserId, (userId) =>
ArtRepository.findArtsByUserId(userId),
);
add("ArtRepository.findById", fx.heavyArtId, (artId) =>
ArtRepository.findById(artId),
);
// AssociationRepository
add("AssociationRepository.findById", fx.heavyAssociation, (association) =>
@@ -1133,6 +1136,12 @@ export function buildCases(fx: Fixtures): {
fx.tournamentTeamInviteCode,
(inviteCode) => TournamentTeamRepository.findByInviteCode(inviteCode),
);
add(
"TournamentTeamRepository.findInviteCodeById",
fx.heavyTournamentTeamId,
(tournamentTeamId) =>
TournamentTeamRepository.findInviteCodeById(tournamentTeamId),
);
add(
"TournamentTeamRepository.findRecentlyPlayedMapsByIds",
fx.tournamentTeamPair,

View File

@@ -92,6 +92,7 @@ export interface Fixtures {
} | null;
heavyArtUserId: number | null;
heavyArtTagId: number | null;
heavyArtId: number | null;
imageSubmitterId: number | null;
imageId: number | null;
vod: { userId: number; videoId: number } | null;
@@ -177,6 +178,7 @@ export async function resolveFixtures(): Promise<Fixtures> {
xrank: await resolveXRank(),
heavyArtUserId: await resolveHeavyArtUserId(),
heavyArtTagId: await resolveHeavyArtTagId(),
heavyArtId: await resolveHeavyArtId(),
imageSubmitterId: await resolveImageSubmitterId(),
imageId: await resolveImageId(),
vod: await resolveVod(),
@@ -1066,6 +1068,18 @@ async function resolveHeavyArtTagId() {
return row?.tagId ?? null;
}
async function resolveHeavyArtId() {
const row = await db
.selectFrom("ArtUserMetadata")
.select(({ fn }) => ["artId", fn.countAll<number>().as("count")])
.groupBy("artId")
.orderBy("count", "desc")
.limit(1)
.executeTakeFirst();
return row?.artId ?? null;
}
async function resolveImageSubmitterId() {
const row = await db
.selectFrom("UnvalidatedUserSubmittedImage")