From 060f102bb6bd2da4311b380f43a37d0c4ea5eca3 Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Mon, 10 Jun 2024 23:41:32 +0300 Subject: [PATCH] Streamline tournament streams --- .../tournament/TournamentRepository.server.ts | 1 + .../tournament/core/streams.server.ts | 26 ++++++++---------- ...icipantTwitchUsersByTournamentId.server.ts | 27 ------------------- .../tournament/routes/to.$id.streams.tsx | 11 +++----- app/features/tournament/routes/to.$id.tsx | 5 +--- 5 files changed, 16 insertions(+), 54 deletions(-) delete mode 100644 app/features/tournament/queries/participantTwitchUsersByTournamentId.server.ts diff --git a/app/features/tournament/TournamentRepository.server.ts b/app/features/tournament/TournamentRepository.server.ts index e01c7670d..bb51fa027 100644 --- a/app/features/tournament/TournamentRepository.server.ts +++ b/app/features/tournament/TournamentRepository.server.ts @@ -96,6 +96,7 @@ export async function findById(id: number) { "User.discordAvatar", "User.customUrl", "User.country", + "User.twitch", "PlusTier.tier as plusTier", "TournamentTeamMember.isOwner", "TournamentTeamMember.createdAt", diff --git a/app/features/tournament/core/streams.server.ts b/app/features/tournament/core/streams.server.ts index 86f933a60..db118a7f0 100644 --- a/app/features/tournament/core/streams.server.ts +++ b/app/features/tournament/core/streams.server.ts @@ -1,13 +1,7 @@ import { getStreams } from "~/modules/twitch"; -import { participantTwitchUsersByTournamentId } from "../queries/participantTwitchUsersByTournamentId.server"; +import type { TournamentData } from "~/features/tournament-bracket/core/Tournament.server"; -export async function streamsByTournamentId({ - tournamentId, - castTwitchAccounts, -}: { - tournamentId: number; - castTwitchAccounts: string[] | null; -}) { +export async function streamsByTournamentId(tournament: TournamentData["ctx"]) { // prevent error logs in development if ( process.env.NODE_ENV === "development" && @@ -15,24 +9,26 @@ export async function streamsByTournamentId({ ) { return []; } - const twitchUsersOfTournament = - participantTwitchUsersByTournamentId(tournamentId); + const twitchUsersOfTournament = tournament.teams + .filter((team) => team.checkIns.length > 0) + .flatMap((team) => team.members) + .filter((member) => member.twitch); const streams = await getStreams(); const tournamentStreams = streams.flatMap((stream) => { - const user = twitchUsersOfTournament.find( - (u) => u.twitch === stream.twitchUserName, + const member = twitchUsersOfTournament.find( + (member) => member.twitch === stream.twitchUserName, ); - if (user) { + if (member) { return { ...stream, - userId: user.id, + userId: member.userId, }; } - if (castTwitchAccounts?.includes(stream.twitchUserName)) { + if (tournament.castTwitchAccounts?.includes(stream.twitchUserName)) { return { ...stream, userId: null, diff --git a/app/features/tournament/queries/participantTwitchUsersByTournamentId.server.ts b/app/features/tournament/queries/participantTwitchUsersByTournamentId.server.ts deleted file mode 100644 index a6efb5994..000000000 --- a/app/features/tournament/queries/participantTwitchUsersByTournamentId.server.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { sql } from "~/db/sql"; -import type { User } from "~/db/types"; - -const stm = sql.prepare(/* sql */ ` - select - "User"."id", - "User"."twitch" - from "User" - left join "TournamentTeamMember" on "TournamentTeamMember"."userId" = "User"."id" - left join "TournamentTeam" on "TournamentTeam"."id" = "TournamentTeamMember"."tournamentTeamId" - left join "TournamentTeamCheckIn" on "TournamentTeamCheckIn"."tournamentTeamId" = "TournamentTeam"."id" - where "TournamentTeam"."tournamentId" = @tournamentId - and "TournamentTeamCheckIn"."checkedInAt" is not null - and "User"."twitch" is not null -`); - -// const testStm = sql.prepare(/* sql */ ` -// select -// "User"."id", -// "User"."twitch" -// from "User" -// where "User"."twitch" is not null -// `); - -export function participantTwitchUsersByTournamentId(tournamentId: number) { - return stm.all({ tournamentId }) as Array>; -} diff --git a/app/features/tournament/routes/to.$id.streams.tsx b/app/features/tournament/routes/to.$id.streams.tsx index 74cdca7c7..957504e29 100644 --- a/app/features/tournament/routes/to.$id.streams.tsx +++ b/app/features/tournament/routes/to.$id.streams.tsx @@ -3,25 +3,20 @@ import { useLoaderData } from "@remix-run/react"; import { useTranslation } from "react-i18next"; import { Redirect } from "~/components/Redirect"; import { tournamentRegisterPage } from "~/utils/urls"; -import * as TournamentRepository from "../TournamentRepository.server"; import { streamsByTournamentId } from "../core/streams.server"; import { tournamentIdFromParams } from "../tournament-utils"; import { useTournament } from "./to.$id"; import { TournamentStream } from "../components/TournamentStream"; +import { tournamentData } from "~/features/tournament-bracket/core/Tournament.server"; export type TournamentStreamsLoader = typeof loader; export const loader = async ({ params }: LoaderFunctionArgs) => { const tournamentId = tournamentIdFromParams(params); + const tournament = await tournamentData({ tournamentId }); return { - streams: await streamsByTournamentId({ - tournamentId, - castTwitchAccounts: - await TournamentRepository.findCastTwitchAccountsByTournamentId( - tournamentId, - ), - }), + streams: await streamsByTournamentId(tournament.ctx), }; }; diff --git a/app/features/tournament/routes/to.$id.tsx b/app/features/tournament/routes/to.$id.tsx index a80334ae8..6dbe3a92a 100644 --- a/app/features/tournament/routes/to.$id.tsx +++ b/app/features/tournament/routes/to.$id.tsx @@ -117,10 +117,7 @@ export const loader = async ({ params, request }: LoaderFunctionArgs) => { const streams = tournament.data.stage.length > 0 - ? await streamsByTournamentId({ - tournamentId, - castTwitchAccounts: tournament.ctx.castTwitchAccounts, - }) + ? await streamsByTournamentId(tournament.ctx) : []; const tournamentStartedInTheLastMonth =