mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-08 12:16:12 -05:00
Refactor permissions and make tournament object fully cacheable (#3341)
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user