mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-06 05:07:36 -05:00
Refactor queries
This commit is contained in:
parent
3bfc0a6bfb
commit
031bdd01be
|
|
@ -12,14 +12,11 @@ export type EventsLoaderData = typeof loader;
|
|||
export const loader = async () => {
|
||||
const user = requireUser();
|
||||
|
||||
// xxx: should probably only load SavedTournamentRepository.upcoming (it can call to ShowcaseTournaments.upcomingTournaments as implementation detail)
|
||||
const [tournamentsData, scrimsData, savedTournamentIds, upcomingTournaments] =
|
||||
await Promise.all([
|
||||
ShowcaseTournaments.categorizedTournamentsByUserId(user.id),
|
||||
ScrimPostRepository.findUserScrims(user.id),
|
||||
SavedTournamentRepository.findTournamentIdsByUserId(user.id),
|
||||
ShowcaseTournaments.upcomingTournaments(),
|
||||
]);
|
||||
const [tournamentsData, scrimsData, savedTournaments] = await Promise.all([
|
||||
ShowcaseTournaments.categorizedTournamentsByUserId(user.id),
|
||||
ScrimPostRepository.findUserScrims(user.id),
|
||||
SavedTournamentRepository.upcoming(user.id),
|
||||
]);
|
||||
|
||||
const registered = tournamentsData.participatingFor
|
||||
.map(tournamentToSidebarEvent)
|
||||
|
|
@ -33,9 +30,7 @@ export const loader = async () => {
|
|||
.map(scrimToSidebarEvent)
|
||||
.sort((a, b) => a.startTime - b.startTime);
|
||||
|
||||
const savedTournamentIdSet = new Set(savedTournamentIds);
|
||||
const saved = upcomingTournaments
|
||||
.filter((t) => savedTournamentIdSet.has(t.id))
|
||||
const saved = savedTournaments
|
||||
.map(tournamentToSidebarEvent)
|
||||
.sort((a, b) => a.startTime - b.startTime);
|
||||
|
||||
|
|
|
|||
|
|
@ -67,20 +67,13 @@ export async function resolveSidebarData(userId: number | null) {
|
|||
};
|
||||
}
|
||||
|
||||
// xxx: combine queries
|
||||
const [
|
||||
tournamentsData,
|
||||
scrimsData,
|
||||
friendsWithActivity,
|
||||
savedTournamentIds,
|
||||
upcomingTournaments,
|
||||
] = await Promise.all([
|
||||
ShowcaseTournaments.categorizedTournamentsByUserId(userId),
|
||||
ScrimPostRepository.findUserScrims(userId),
|
||||
FriendRepository.findByUserIdWithActivity(userId),
|
||||
SavedTournamentRepository.findTournamentIdsByUserId(userId),
|
||||
ShowcaseTournaments.upcomingTournaments(),
|
||||
]);
|
||||
const [tournamentsData, scrimsData, friendsWithActivity, savedTournaments] =
|
||||
await Promise.all([
|
||||
ShowcaseTournaments.categorizedTournamentsByUserId(userId),
|
||||
ScrimPostRepository.findUserScrims(userId),
|
||||
FriendRepository.findByUserIdWithActivity(userId),
|
||||
SavedTournamentRepository.upcoming(userId),
|
||||
]);
|
||||
|
||||
const seenTournamentIds = new Set<number>();
|
||||
const tournamentEvents: SidebarEvent[] = [
|
||||
|
|
@ -94,11 +87,8 @@ export async function resolveSidebarData(userId: number | null) {
|
|||
})
|
||||
.map(tournamentToSidebarEvent);
|
||||
|
||||
const savedTournamentIdSet = new Set(savedTournamentIds);
|
||||
const savedEvents: SidebarEvent[] = upcomingTournaments
|
||||
.filter(
|
||||
(t) => savedTournamentIdSet.has(t.id) && !seenTournamentIds.has(t.id),
|
||||
)
|
||||
const savedEvents: SidebarEvent[] = savedTournaments
|
||||
.filter((t) => !seenTournamentIds.has(t.id))
|
||||
.map((t) => {
|
||||
seenTournamentIds.add(t.id);
|
||||
return tournamentToSidebarEvent(t);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
import { db } from "~/db/sql";
|
||||
import type { ShowcaseCalendarEvent } from "~/features/calendar/calendar-types";
|
||||
import * as ShowcaseTournaments from "~/features/front-page/core/ShowcaseTournaments.server";
|
||||
|
||||
export function save({
|
||||
userId,
|
||||
|
|
@ -57,6 +59,17 @@ export async function findTournamentIdsByUserId(
|
|||
return rows.map((r) => r.tournamentId);
|
||||
}
|
||||
|
||||
export async function upcoming(
|
||||
userId: number,
|
||||
): Promise<ShowcaseCalendarEvent[]> {
|
||||
const [savedIds, tournaments] = await Promise.all([
|
||||
findTournamentIdsByUserId(userId),
|
||||
ShowcaseTournaments.upcomingTournaments(),
|
||||
]);
|
||||
|
||||
return tournaments.filter((t) => savedIds.includes(t.id));
|
||||
}
|
||||
|
||||
export function deleteByTournamentId(tournamentId: number) {
|
||||
return db
|
||||
.deleteFrom("SavedTournament")
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user