Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 12 additions & 6 deletions convex/_generated/api.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ import type * as _model_matchResults_queries_getMatchResultsByTournament from ".
import type * as _model_matchResults_queries_getMatchResultsByTournamentPairing from "../_model/matchResults/queries/getMatchResultsByTournamentPairing.js";
import type * as _model_matchResults_queries_getMatchResultsByTournamentRound from "../_model/matchResults/queries/getMatchResultsByTournamentRound.js";
import type * as _model_tournamentCompetitors__helpers_deepenTournamentCompetitor from "../_model/tournamentCompetitors/_helpers/deepenTournamentCompetitor.js";
import type * as _model_tournamentCompetitors__helpers_sortTournamentCompetitorsByName from "../_model/tournamentCompetitors/_helpers/sortTournamentCompetitorsByName.js";
import type * as _model_tournamentCompetitors_fields from "../_model/tournamentCompetitors/fields.js";
import type * as _model_tournamentCompetitors_index from "../_model/tournamentCompetitors/index.js";
import type * as _model_tournamentCompetitors_mutations_addTournamentCompetitorPlayer from "../_model/tournamentCompetitors/mutations/addTournamentCompetitorPlayer.js";
Expand All @@ -80,13 +81,15 @@ import type * as _model_tournamentCompetitors_queries_getTournamentCompetitorsBy
import type * as _model_tournamentPairings__helpers_assignBye from "../_model/tournamentPairings/_helpers/assignBye.js";
import type * as _model_tournamentPairings__helpers_deepenTournamentPairing from "../_model/tournamentPairings/_helpers/deepenTournamentPairing.js";
import type * as _model_tournamentPairings__helpers_generateDraftPairings from "../_model/tournamentPairings/_helpers/generateDraftPairings.js";
import type * as _model_tournamentPairings__helpers_generateTableAssignments from "../_model/tournamentPairings/_helpers/generateTableAssignments.js";
import type * as _model_tournamentPairings__helpers_getTournamentPairingDeep from "../_model/tournamentPairings/_helpers/getTournamentPairingDeep.js";
import type * as _model_tournamentPairings__helpers_getTournamentPairingShallow from "../_model/tournamentPairings/_helpers/getTournamentPairingShallow.js";
import type * as _model_tournamentPairings__helpers_shuffle from "../_model/tournamentPairings/_helpers/shuffle.js";
import type * as _model_tournamentPairings__helpers_sortByRank from "../_model/tournamentPairings/_helpers/sortByRank.js";
import type * as _model_tournamentPairings__helpers_sortCompetitorPairs from "../_model/tournamentPairings/_helpers/sortCompetitorPairs.js";
import type * as _model_tournamentPairings__helpers_sortPairingsByTable from "../_model/tournamentPairings/_helpers/sortPairingsByTable.js";
import type * as _model_tournamentPairings_fields from "../_model/tournamentPairings/fields.js";
import type * as _model_tournamentPairings_index from "../_model/tournamentPairings/index.js";
import type * as _model_tournamentPairings_mutations_createTournamentPairings from "../_model/tournamentPairings/mutations/createTournamentPairings.js";
import type * as _model_tournamentPairings_queries_getActiveTournamentPairingsByUser from "../_model/tournamentPairings/queries/getActiveTournamentPairingsByUser.js";
import type * as _model_tournamentPairings_queries_getDraftTournamentPairings from "../_model/tournamentPairings/queries/getDraftTournamentPairings.js";
import type * as _model_tournamentPairings_queries_getTournamentPairing from "../_model/tournamentPairings/queries/getTournamentPairing.js";
Expand All @@ -112,13 +115,13 @@ import type * as _model_tournaments__helpers_getTournamentShallow from "../_mode
import type * as _model_tournaments__helpers_getTournamentUserIds from "../_model/tournaments/_helpers/getTournamentUserIds.js";
import type * as _model_tournaments_fields from "../_model/tournaments/fields.js";
import type * as _model_tournaments_index from "../_model/tournaments/index.js";
import type * as _model_tournaments_mutations_closeTournamentRound from "../_model/tournaments/mutations/closeTournamentRound.js";
import type * as _model_tournaments_mutations_createTournament from "../_model/tournaments/mutations/createTournament.js";
import type * as _model_tournaments_mutations_deleteTournament from "../_model/tournaments/mutations/deleteTournament.js";
import type * as _model_tournaments_mutations_endTournament from "../_model/tournaments/mutations/endTournament.js";
import type * as _model_tournaments_mutations_openTournamentRound from "../_model/tournaments/mutations/openTournamentRound.js";
import type * as _model_tournaments_mutations_endTournamentRound from "../_model/tournaments/mutations/endTournamentRound.js";
import type * as _model_tournaments_mutations_publishTournament from "../_model/tournaments/mutations/publishTournament.js";
import type * as _model_tournaments_mutations_startTournament from "../_model/tournaments/mutations/startTournament.js";
import type * as _model_tournaments_mutations_startTournamentRound from "../_model/tournaments/mutations/startTournamentRound.js";
import type * as _model_tournaments_mutations_updateTournament from "../_model/tournaments/mutations/updateTournament.js";
import type * as _model_tournaments_queries_getTournament from "../_model/tournaments/queries/getTournament.js";
import type * as _model_tournaments_queries_getTournamentOpenRound from "../_model/tournaments/queries/getTournamentOpenRound.js";
Expand Down Expand Up @@ -249,6 +252,7 @@ declare const fullApi: ApiFromModules<{
"_model/matchResults/queries/getMatchResultsByTournamentPairing": typeof _model_matchResults_queries_getMatchResultsByTournamentPairing;
"_model/matchResults/queries/getMatchResultsByTournamentRound": typeof _model_matchResults_queries_getMatchResultsByTournamentRound;
"_model/tournamentCompetitors/_helpers/deepenTournamentCompetitor": typeof _model_tournamentCompetitors__helpers_deepenTournamentCompetitor;
"_model/tournamentCompetitors/_helpers/sortTournamentCompetitorsByName": typeof _model_tournamentCompetitors__helpers_sortTournamentCompetitorsByName;
"_model/tournamentCompetitors/fields": typeof _model_tournamentCompetitors_fields;
"_model/tournamentCompetitors/index": typeof _model_tournamentCompetitors_index;
"_model/tournamentCompetitors/mutations/addTournamentCompetitorPlayer": typeof _model_tournamentCompetitors_mutations_addTournamentCompetitorPlayer;
Expand All @@ -263,13 +267,15 @@ declare const fullApi: ApiFromModules<{
"_model/tournamentPairings/_helpers/assignBye": typeof _model_tournamentPairings__helpers_assignBye;
"_model/tournamentPairings/_helpers/deepenTournamentPairing": typeof _model_tournamentPairings__helpers_deepenTournamentPairing;
"_model/tournamentPairings/_helpers/generateDraftPairings": typeof _model_tournamentPairings__helpers_generateDraftPairings;
"_model/tournamentPairings/_helpers/generateTableAssignments": typeof _model_tournamentPairings__helpers_generateTableAssignments;
"_model/tournamentPairings/_helpers/getTournamentPairingDeep": typeof _model_tournamentPairings__helpers_getTournamentPairingDeep;
"_model/tournamentPairings/_helpers/getTournamentPairingShallow": typeof _model_tournamentPairings__helpers_getTournamentPairingShallow;
"_model/tournamentPairings/_helpers/shuffle": typeof _model_tournamentPairings__helpers_shuffle;
"_model/tournamentPairings/_helpers/sortByRank": typeof _model_tournamentPairings__helpers_sortByRank;
"_model/tournamentPairings/_helpers/sortCompetitorPairs": typeof _model_tournamentPairings__helpers_sortCompetitorPairs;
"_model/tournamentPairings/_helpers/sortPairingsByTable": typeof _model_tournamentPairings__helpers_sortPairingsByTable;
"_model/tournamentPairings/fields": typeof _model_tournamentPairings_fields;
"_model/tournamentPairings/index": typeof _model_tournamentPairings_index;
"_model/tournamentPairings/mutations/createTournamentPairings": typeof _model_tournamentPairings_mutations_createTournamentPairings;
"_model/tournamentPairings/queries/getActiveTournamentPairingsByUser": typeof _model_tournamentPairings_queries_getActiveTournamentPairingsByUser;
"_model/tournamentPairings/queries/getDraftTournamentPairings": typeof _model_tournamentPairings_queries_getDraftTournamentPairings;
"_model/tournamentPairings/queries/getTournamentPairing": typeof _model_tournamentPairings_queries_getTournamentPairing;
Expand All @@ -295,13 +301,13 @@ declare const fullApi: ApiFromModules<{
"_model/tournaments/_helpers/getTournamentUserIds": typeof _model_tournaments__helpers_getTournamentUserIds;
"_model/tournaments/fields": typeof _model_tournaments_fields;
"_model/tournaments/index": typeof _model_tournaments_index;
"_model/tournaments/mutations/closeTournamentRound": typeof _model_tournaments_mutations_closeTournamentRound;
"_model/tournaments/mutations/createTournament": typeof _model_tournaments_mutations_createTournament;
"_model/tournaments/mutations/deleteTournament": typeof _model_tournaments_mutations_deleteTournament;
"_model/tournaments/mutations/endTournament": typeof _model_tournaments_mutations_endTournament;
"_model/tournaments/mutations/openTournamentRound": typeof _model_tournaments_mutations_openTournamentRound;
"_model/tournaments/mutations/endTournamentRound": typeof _model_tournaments_mutations_endTournamentRound;
"_model/tournaments/mutations/publishTournament": typeof _model_tournaments_mutations_publishTournament;
"_model/tournaments/mutations/startTournament": typeof _model_tournaments_mutations_startTournament;
"_model/tournaments/mutations/startTournamentRound": typeof _model_tournaments_mutations_startTournamentRound;
"_model/tournaments/mutations/updateTournament": typeof _model_tournaments_mutations_updateTournament;
"_model/tournaments/queries/getTournament": typeof _model_tournaments_queries_getTournament;
"_model/tournaments/queries/getTournamentOpenRound": typeof _model_tournaments_queries_getTournamentOpenRound;
Expand Down
4 changes: 2 additions & 2 deletions convex/_model/fowV4/aggregateFowV4TournamentData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,11 +131,11 @@ export const aggregateFowV4TournamentData = async (
}

return {
players: flattenFowV4StatMap(playerStats).filter(({ gamesPlayed }) => gamesPlayed).map(({ id, stats }) => ({
players: flattenFowV4StatMap(playerStats).map(({ id, stats }) => ({
id,
stats,
})),
competitors: flattenFowV4StatMap(competitorStats).filter(({ gamesPlayed }) => gamesPlayed).map(({ id, stats }) => ({
competitors: flattenFowV4StatMap(competitorStats).map(({ id, stats }) => ({
id,
stats,
...competitorMeta[id],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Doc } from '../../../_generated/dataModel';
import { Doc, Id } from '../../../_generated/dataModel';
import { QueryCtx } from '../../../_generated/server';
import { LimitedUser } from '../../users/_helpers/redactUser';
import { getUser } from '../../users/queries/getUser';
Expand All @@ -17,6 +17,12 @@ import { getUser } from '../../users/queries/getUser';
export const deepenTournamentCompetitor = async (
ctx: QueryCtx,
tournamentCompetitor: Doc<'tournamentCompetitors'>,
results?: {
playedTables: (number | null)[];
opponentIds: Id<'tournamentCompetitors'>[];
byeRounds: number[];
rank: number;
},
) => {
const players = await Promise.all(tournamentCompetitor.players.map(async ({ active, userId }) => ({
active,
Expand All @@ -29,6 +35,7 @@ export const deepenTournamentCompetitor = async (

return {
...tournamentCompetitor,
...results,
players: players.filter(playerHasUser),
};
};
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { DeepTournamentCompetitor } from './deepenTournamentCompetitor';

export const sortTournamentCompetitorsByName = (
a: DeepTournamentCompetitor,
b: DeepTournamentCompetitor,
): number => {
const getSortValue = (competitor: DeepTournamentCompetitor): string => {
if (competitor.teamName) {
return competitor.teamName;
}
if (competitor.players[0]?.user.familyName) {
return competitor.players[0].user.familyName;
}
if (competitor.players[0]?.user.username) {
return competitor.players[0].user.username;
}
return '';
};
return getSortValue(a).localeCompare(getSortValue(b));
};
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { QueryCtx } from '../../../_generated/server';
import { deepenTournamentCompetitor, DeepTournamentCompetitor } from '../_helpers/deepenTournamentCompetitor';
import { sortTournamentCompetitorsByName } from '../_helpers/sortTournamentCompetitorsByName';

export const getTournamentCompetitors = async (
ctx: QueryCtx,
Expand All @@ -8,19 +9,5 @@ export const getTournamentCompetitors = async (
const deepTournamentCompetitors = await Promise.all(tournamentCompetitors.map(
async (item) => await deepenTournamentCompetitor(ctx, item),
));
return deepTournamentCompetitors.sort((a, b) => {
const getSortValue = (competitor: DeepTournamentCompetitor): string => {
if (competitor.teamName) {
return competitor.teamName;
}
if (competitor.players[0].user.familyName) {
return competitor.players[0].user.familyName;
}
if (competitor.players[0].user.username) {
return competitor.players[0].user.username;
}
return '';
};
return getSortValue(a).localeCompare(getSortValue(b));
});
return deepTournamentCompetitors.sort(sortTournamentCompetitorsByName);
};
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { Infer,v } from 'convex/values';

import { QueryCtx } from '../../../_generated/server';
import { getTournamentRankings } from '../../tournaments';
import { deepenTournamentCompetitor,DeepTournamentCompetitor } from '../_helpers/deepenTournamentCompetitor';
import { sortTournamentCompetitorsByName } from '../_helpers/sortTournamentCompetitorsByName';

export const getTournamentCompetitorsByTournamentArgs = v.object({
tournamentId: v.id('tournaments'),
includeRankings: v.optional(v.number()),
});

export const getTournamentCompetitorsByTournament = async (
Expand All @@ -14,22 +17,13 @@ export const getTournamentCompetitorsByTournament = async (
const tournamentCompetitors = await ctx.db.query('tournamentCompetitors')
.withIndex('by_tournament_id', (q) => q.eq('tournamentId', args.tournamentId))
.collect();
const deepTournamentCompetitors = await Promise.all(tournamentCompetitors.map(
async (item) => await deepenTournamentCompetitor(ctx, item),
));
return deepTournamentCompetitors.sort((a, b) => {
const getSortValue = (competitor: DeepTournamentCompetitor): string => {
if (competitor.teamName) {
return competitor.teamName;
}
if (competitor.players[0]?.user.familyName) {
return competitor.players[0].user.familyName;
}
if (competitor.players[0]?.user.username) {
return competitor.players[0].user.username;
}
return '';
};
return getSortValue(a).localeCompare(getSortValue(b));
});
const rankings = args.includeRankings && args.includeRankings > -1 ? await getTournamentRankings(ctx, {
tournamentId: args.tournamentId,
round: args.includeRankings,
}) : undefined;
const deepTournamentCompetitors = await Promise.all(tournamentCompetitors.map(async (item) => {
const results = rankings?.competitors.find((c) => c.id === item._id);
return await deepenTournamentCompetitor(ctx, item, results );
}));
return deepTournamentCompetitors.sort(sortTournamentCompetitorsByName);
};
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { assignBye } from './assignBye';
/**
* A tuple of TournamentCompetitorRanked's to be paired.
*/
export type DraftTournamentPairing = [TournamentCompetitorRanked, TournamentCompetitorRanked | null];
export type CompetitorPair = [TournamentCompetitorRanked, TournamentCompetitorRanked | null];

/**
* Generates draft pairings for an array of ranked TournamentCompetitors.
Expand All @@ -23,8 +23,8 @@ export type DraftTournamentPairing = [TournamentCompetitorRanked, TournamentComp
export const generateDraftPairings = (
orderedCompetitors: TournamentCompetitorRanked[],
allowRepeats: boolean = false,
): DraftTournamentPairing[] => {
const pairings: DraftTournamentPairing[] = [];
): CompetitorPair[] => {
const pairings: CompetitorPair[] = [];

// Handle byes:
const [byeCompetitor, restCompetitors]= assignBye(orderedCompetitors);
Expand Down Expand Up @@ -52,7 +52,7 @@ export const generateDraftPairings = (
export const recursivePair = (
pool: TournamentCompetitorRanked[],
allowRepeats: boolean,
): DraftTournamentPairing[] | null => {
): CompetitorPair[] | null => {
if (pool.length === 0) {
return []; // everyone paired
}
Expand Down
103 changes: 0 additions & 103 deletions convex/_model/tournamentPairings/_helpers/generateTableAssignments.ts

This file was deleted.

Loading