perf upgrade

This commit is contained in:
yohlo
2026-07-12 21:26:16 -07:00
parent ec334bbed4
commit 778f0f7994
74 changed files with 1522 additions and 1014 deletions
+62 -33
View File
@@ -3,26 +3,25 @@ import { createServerFn } from "@tanstack/react-start";
import { isRedirect } from "@tanstack/react-router";
import { Player, playerInputSchema, playerUpdateSchema, PlayerStats } from "@/features/players/types";
import { Match } from "@/features/matches/types";
import { pbAdmin } from "@/lib/pocketbase/client";
import { z } from "zod";
import { logger } from ".";
import { Logger } from "@/lib/logger";
import { getRequest } from "@tanstack/react-start/server";
import { toServerResult } from "@/lib/tanstack-query/utils/to-server-result";
import { serverFnLoggingMiddleware } from "@/utils/activities";
const logger = new Logger('Players');
export const fetchMe = createServerFn()
.handler(async () =>
.handler(async () =>
toServerResult(async () => {
const request = getRequest();
try {
const context = await getSessionContext(request);
await pbAdmin.authPromise;
const result = await pbAdmin.getPlayerByAuthId(context.userAuthId);
return {
user: result || undefined,
roles: context.roles,
user: context.player || undefined,
roles: context.roles,
metadata: context.metadata,
phone: context.phone
};
@@ -35,20 +34,25 @@ export const fetchMe = createServerFn()
);
export const getPlayer = createServerFn()
.inputValidator(z.string())
.validator(z.string())
.middleware([superTokensFunctionMiddleware])
.handler(async ({ data }) =>
toServerResult<Player>(async () => await pbAdmin.getPlayer(data))
.handler(async ({ data }) =>
toServerResult<Player>(async () => {
const { pbAdmin } = await import("@/lib/pocketbase/client");
return await pbAdmin.getPlayer(data);
})
);
export const updatePlayer = createServerFn()
.inputValidator(playerUpdateSchema)
.validator(playerUpdateSchema)
.middleware([superTokensFunctionMiddleware, serverFnLoggingMiddleware])
.handler(async ({ context, data }) =>
.handler(async ({ context, data }) =>
toServerResult(async () => {
const userAuthId = context.userAuthId;
if (!userAuthId) return;
const { pbAdmin } = await import("@/lib/pocketbase/client");
const existing = await pbAdmin.getPlayerByAuthId(userAuthId);
if (!existing) return;
@@ -69,13 +73,15 @@ export const updatePlayer = createServerFn()
);
export const createPlayer = createServerFn()
.inputValidator(playerInputSchema)
.validator(playerInputSchema)
.middleware([superTokensFunctionMiddleware])
.handler(async ({ context, data }) =>
.handler(async ({ context, data }) =>
toServerResult(async () => {
const userAuthId = context.userAuthId;
if (!userAuthId) return;
const { pbAdmin } = await import("@/lib/pocketbase/client");
const existing = await pbAdmin.getPlayerByAuthId(userAuthId);
if (existing) return;
@@ -94,21 +100,23 @@ export const createPlayer = createServerFn()
);
export const associatePlayer = createServerFn()
.inputValidator(z.string())
.validator(z.string())
.middleware([superTokensFunctionMiddleware, serverFnLoggingMiddleware])
.handler(async ({ context, data }) =>
.handler(async ({ context, data }) =>
toServerResult(async () => {
const userAuthId = context.userAuthId;
if (!userAuthId) return;
const { pbAdmin } = await import("@/lib/pocketbase/client");
const p = await pbAdmin.getPlayer(data);
await pbAdmin.updatePlayer(data, {
auth_id: userAuthId
});
await setUserMetadata({ data: {
player_id: data,
await setUserMetadata({ data: {
player_id: data,
first_name: p?.first_name,
last_name: p?.last_name
}});
@@ -121,49 +129,70 @@ export const associatePlayer = createServerFn()
export const listPlayers = createServerFn()
.middleware([superTokensFunctionMiddleware])
.handler(async () =>
toServerResult(pbAdmin.listPlayers)
.handler(async () =>
toServerResult(async () => {
const { pbAdmin } = await import("@/lib/pocketbase/client");
return await pbAdmin.listPlayers();
})
);
export const getUnassociatedPlayers = createServerFn()
.middleware([superTokensFunctionMiddleware])
.handler(async () =>
toServerResult(pbAdmin.getUnassociatedPlayers)
.handler(async () =>
toServerResult(async () => {
const { pbAdmin } = await import("@/lib/pocketbase/client");
return await pbAdmin.getUnassociatedPlayers();
})
);
export const getPlayerStats = createServerFn()
.inputValidator(z.object({
.validator(z.object({
playerId: z.string(),
viewType: z.enum(['all', 'mainline', 'regional']).optional()
}))
.middleware([superTokensFunctionMiddleware])
.handler(async ({ data }) =>
toServerResult<PlayerStats>(async () => await pbAdmin.getPlayerStats(data.playerId, data.viewType))
toServerResult<PlayerStats>(async () => {
const { pbAdmin } = await import("@/lib/pocketbase/client");
return await pbAdmin.getPlayerStats(data.playerId, data.viewType);
})
);
export const getAllPlayerStats = createServerFn()
.inputValidator(z.enum(['all', 'mainline', 'regional']).optional())
.validator(z.enum(['all', 'mainline', 'regional']).optional())
.middleware([superTokensFunctionMiddleware])
.handler(async ({ data }) =>
toServerResult<PlayerStats[]>(async () => await pbAdmin.getAllPlayerStats(data))
toServerResult<PlayerStats[]>(async () => {
const { pbAdmin } = await import("@/lib/pocketbase/client");
return await pbAdmin.getAllPlayerStats(data);
})
);
export const getPlayerMatches = createServerFn()
.inputValidator(z.string())
.validator(z.string())
.middleware([superTokensFunctionMiddleware])
.handler(async ({ data }) =>
toServerResult<Match[]>(async () => await pbAdmin.getPlayerMatches(data))
toServerResult<Match[]>(async () => {
const { pbAdmin } = await import("@/lib/pocketbase/client");
return await pbAdmin.getPlayerMatches(data);
})
);
export const getUnenrolledPlayers = createServerFn()
.inputValidator(z.string())
.validator(z.string())
.middleware([superTokensFunctionMiddleware])
.handler(async ({ data: tournamentId }) =>
toServerResult(async () => await pbAdmin.getUnenrolledPlayers(tournamentId))
toServerResult(async () => {
const { pbAdmin } = await import("@/lib/pocketbase/client");
return await pbAdmin.getUnenrolledPlayers(tournamentId);
})
);
export const getPlayersActivity = createServerFn()
.middleware([superTokensFunctionMiddleware])
.handler(async () =>
toServerResult<Player[]>(async () => await pbAdmin.getPlayersActivity())
toServerResult<Player[]>(async () => {
const { pbAdmin } = await import("@/lib/pocketbase/client");
return await pbAdmin.getPlayersActivity();
})
);